Как закодировать/раскодировать текст в Erlang? Доброго времени суток, %Habrauser%! Нужно закодировать/раскодировать простой текст с помощью AES-256 шифрования. Простейший код:crypto:start(), Key = >, IVec = >, Text = >,
Enc = crypto:block_encrypt(aes_cbc256, Key, IVec, Text), Res = crypto:block_decrypt(aes_cbc256, Key, IVec, Enc), io:format("Res: ~s~n", [binary_to_list(Res)]). выдаёт ошибку:** exception error: bad argument in function crypto:aes_cbc_crypt/4 called as crypto:aes_cbc_crypt(>, >, >,true) Немного подебажив я обнаружил, что проблема только для строки менее 32 символов. В криптографии я не силён. Можно как-то сделать, чтобы кодировался/раскодировался текст любой длинны.
Да, проблема заключается в том, что ключ должен иметь длину в 32 байта (256 бит) для AES-256 шифрования. Если ключ короче этой длины, то необходимо дополнить его до 32 байт.
Теперь ключ будет автоматически дополняться или обрезаться до 32 байт, что позволит работать с текстом любой длины.
Надеюсь, это поможет вам успешно закодировать и раскодировать текст с помощью AES-256 шифрования в Erlang. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!
Да, проблема заключается в том, что ключ должен иметь длину в 32 байта (256 бит) для AES-256 шифрования. Если ключ короче этой длины, то необходимо дополнить его до 32 байт.
Вот исправленный код:
crypto:start(),Key = <<"aj2lbj2k4kljaj3k2l4k3l4kk2l3jj">>,
IVec = <<0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>,
Text = <<"testtesttesttesttesttesttesttest">>,
PaddedKey = crypto:block_encrypt(aes_ecb128, <<>>, <<>>, Key),
Enc = crypto:block_encrypt(aes_cbc256, PaddedKey, IVec, Text),
Res = crypto:block_decrypt(aes_cbc256, PaddedKey, IVec, Enc),
io:format("Res: ~s~n", [binary_to_list(Res)]).
Теперь ключ будет автоматически дополняться или обрезаться до 32 байт, что позволит работать с текстом любой длины.
Надеюсь, это поможет вам успешно закодировать и раскодировать текст с помощью AES-256 шифрования в Erlang. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!