На самом деле ошибка говорит о invalid ciphertext size (must be 16 bytes)
, поэтому проблема не в вашем key
, а изменение длины key
, как вы сказали в своем посте, не решит проблему, поскольку это не касается ключ.
Это распространенная и известная проблема , которая касается длины открытого текста в CBC и возникает при использовании зашифрованного текста с длиной, отличной от 16 байтов.
Чтобы решить эту проблему, вам нужно добавить заполнение для вашего зашифрованного текста, подробности можно прочитать в Почему все входы в AES должны быть кратны 16? [ 1112].
†‹вЂ‹ †‹вЂ‹ †‹вЂ "вЂ"
yourStringStream.str()
Используйте .str () - метод :
Управляет содержанием базового строкового объекта.
1) Возвраты копия базовой строки, как будто путем вызова
rdbuf()->str()
.2) Замены содержание базовой строки, как будто путем вызова
rdbuf()->str(new_str)
...Примечания
копия базовой строки, возвращенной ул., является временным объектом, который будет разрушен в конце выражения, так непосредственно вызов
c_str()
на результатеstr()
(например, вauto *ptr = out.str().c_str();
) результаты в висячем указателе...
Из памяти Вы звоните stringstream::str()
для вывода эти std::string
значение.