Похоже, вы правы.Похоже, использовать PKCS7.В этом случае вы можете выбрать следующие параметры:
- Добавьте его к нулю самостоятельно и отмените последний блок зашифрованного текста
- Отредактируйте код и заставьте функцию заполнения заполнять нулями (остерегайтесь лицензионных ограничений -Я не смотрел на лицензию)
Что касается того, почему, я думаю, у них просто не было необходимости делать это или времени для ее реализации.
Если вы выберете вариант 1, PKCS7 добавляет полный блок размером 0x10
байт, если ваш открытый текст уже кратен размеру блока.Таким образом, вы можете просто заполнить свой открытый текст байтами 0x00
, чтобы сделать его кратным размеру блока, и зашифровать его.Затем вы бы отбросили последние 128-бит шифротекста (то есть всего 16 байтов зашифрованного 0xFF).В итоге вы получите совместимый результат.
Если вы выберете вариант 2, я не уверен, какую реализацию вы используете, но я думаю, что все они достаточно просты.
Здесьэто функция заполнения для реализации Javascript:
padBytesIn: function(data) {
var len = data.length;
var padByte = 16 - (len % 16);
for (var i = 0; i < padByte; i++) {
data.push(padByte);
}
},
Вот что вы могли бы изменить на:
padBytesIn: function(data) {
var len = data.length;
if( len % 16 > 0 ){
var padLen = 16 - (len % 16);
for (var i = 0; i < padLen; i++) {
data.push(0);
}
}
},