«ключ должен быть 16 байтов» AES-128 CBC, с ключом MD5 + IV - PullRequest
0 голосов
/ 14 мая 2019

Я взаимодействую с API, который требует от меня шифрования чего-либо с помощью AES-128 в режиме CBC.

Они сказали, что для ключа и IV мне нужно использовать 16-байтовый хэш MD5из строки, которую они мне дают.

Я некоторое время гуглил и похоже, что все MD5 составляет 16 байт, так почему же это не работает?

  key = Digest::MD5.hexdigest(temp_token)
  cipher = OpenSSL::Cipher::AES.new(128, :CBC)
  cipher.encrypt
  cipher.key = key # ArgumentError: key must be 16 bytes
  cipher.iv = key # ArgumentError: iv must be 16 bytes

  encrypted = cipher.update(joined_params) + cipher.final
  Base64.urlsafe_encode64(encrypted)

1 Ответ

0 голосов
/ 14 мая 2019

Проблема была в том, что мне нужно было использовать Digest::MD5.digest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...