Зашифровать сообщение с помощью AES-CBC с отступом PKCS#7, используя forge.js

Мне нужно подать заявку PKCS#7 заполнение данными, которые обрабатываются с помощью алгоритма AES-CBC. я использую forge Lib. Вот мой в настоящее время рабочий код (без отступов):

// transform json data to bytes
var data = {foo: 'bar'};
var stringData = JSON.stringify(data);
var bytes = forge.util.createBuffer(stringData);

// generate 16-byte vector iv
var iv = forge.random.getBytesSync(16);

// ciphering process
var cipher = forge.cipher.createCipher('AES-CBC', key);
cipher.start({iv: iv});
cipher.update(bytes);
cipher.finish();
var encrypted = cipher.output;

Так что с теоретической точки зрения я знаю, что я должен добавить 1-16 байтов к моему bytes переменная, прежде чем передать его aes алгоритм. Этот вид операции встроен в forge Lib? Если нет, может ли кто-нибудь помочь мне с реализацией применения отступа к сообщению?

1 ответ

Решение

Хотя документация не упоминает об этом, похоже, что по умолчанию для AES-CBC используется отступ PKCS#7. Смотрите эту ветку и комментарии cipherModes.js

modes.cbc.prototype.pad = function(input, options) {
  // add PKCS#7 padding to block (each pad byte is the
  // value of the number of pad bytes)
Другие вопросы по тегам