Проблема с расшифровкой AES Python 3, проблема длины IV - PullRequest
0 голосов
/ 27 сентября 2018

Я пытался расшифровать зашифрованный текст AES с помощью Python 3.

Я знаю, что ключ был закодирован следующим образом (javascript):

var k = CryptoJS.SHA256("\x93\x39\x02\x49\x83\x02\x82\xf3\x23\xf8\xd3\x13\x00"); 

    if(u == "\x68\x34\x63\x6b\x33\x72") {
        var enc = CryptoJS.AES.encrypt(p, CryptoJS.enc.Hex.parse(k.toString().substring(0,32)), { iv: CryptoJS.enc.Hex.parse(k.toString().substring(32,64)) });
        if(enc == "PKhuCrfh3RUw4vie3OMa8z4kcww1i7198ly0Q4rpuyA=") {
            t = true;
        }
    } 

Теперь, как вы можетесм. IV шифрования длиной 32 символа, однако в Python 3 я не могу использовать строку длиной 32 в качестве своего IV.

Я использую следующий код:

def decrypt(encrypted, passphrase_full):
  half1_passphrase = passphrase_full[0:32]
  half2_passphrase = passphrase_full[32:]
  print(len(half2_passphrase))
  IV = half2_passphrase
  aes = AES.new(half1_passphrase, AES.MODE_CBC, IV)
  return aes.decrypt(encrypted)

И я получаю

ValueError: IV должен иметь длину 16 байтов

Итак, как мне правильно расшифровать мою строку?Большое спасибо

...