2016-12-20 205 views
0

我需要將PKCS#7填充應用於正在使用AES-CBC算法進行消解的數據。我使用forge lib。這是我目前工作的代碼(不填充):用AES-CBC加密使用forge.js的PKCS#7填充消息

// 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; 

所以從理論角度,我知道,我應該將它傳遞給aes算法之前追加1-16個字節來我bytes變量。 forge庫中內置了這種操作嗎?如果沒有,有人可以幫我實施填充消息的應用程序嗎?

回答

1

儘管文檔沒有提到它,但AES-CBC的默認填充似乎是PKCS#7。請參閱this threadcipherModes.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