Как выполнить операцию сдвига битов правильно?

Как правильно организовать шифрование строки с использованием битовых операций (сдвигов) и убедиться в правильном порядке последовательности операций? Вот участок кода для шифрования строки и мне нужна помощь с проверкой логических операторов и сдвигов.
  • 11 мая 2024 г. 20:20
Ответы на вопрос 2
Для выполнения операции сдвига битов можно использовать операторы << (левый сдвиг) и >> (правый сдвиг). Например, если у вас есть переменная `num` и вы хотите сдвинуть её на 1 бит влево, то код будет выглядеть так:

```
num = num << 1;
```

Для шифрования строки с использованием битовых операций, обычно используют XOR (исключающее ИЛИ). Вот как можно зашифровать строку и дешифровать её обратно:

```python
# Зашифровываем строку
message = "Hello, world!"
key = 111
encrypted_message = ""
for char in message:
    encrypted_char = ord(char) ^ key
    encrypted_message += chr(encrypted_char)

# Дешифруем строку
decrypted_message = ""
for char in encrypted_message:
    decrypted_char = ord(char) ^ key
    decrypted_message += chr(decrypted_char)

print("Исходное сообщение:", message)
print("Зашифрованное сообщение:", encrypted_message)
print("Дешифрованное сообщение:", decrypted_message)
```

В данном примере мы шифруем каждый символ строки `message` с помощью операции XOR с ключом `key`. Для дешифровки мы снова применяем операцию XOR с тем же ключом. Пожалуйста, убедитесь, что вы используете одинаковый ключ и правильный порядок операций для шифрования и дешифрования.
Идея правильная, но битовые маски - нет. Чтобы взять a7 надо действительно сделать & 0x80 . Но для a6 надо брать & 0x40 . Потом идут 0x20, 0x10, 0x08, 0x04, 0x02, 0x01. 

Ваше 0x70 - это 0b01110000 - три бита вместо одного. Повторите 16-ричную систему счисления.
Похожие вопросы