2016-12-20 145 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