2016-12-20 1 views
0

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

// 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? Если нет, может ли кто-нибудь помочь мне с внедрением дополнения к сообщению?

ответ

1

Хотя документация не упоминает об этом, кажется, что заполнение по умолчанию для AES-CBC является PKCS # 7. См this thread и комментарии 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) 
+0

Спасибо :) Я создал PR, чтобы добавить это подделать ридми. – Jacka

Смежные вопросы