【问题标题】:encrypt message with AES-CBC with PKCS#7 padding using forge.js使用 forge.js 使用带有 PKCS#7 填充的 AES-CBC 加密消息
【发布时间】:2017-05-05 15:19:43
【问题描述】:

我需要将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;

所以从理论上讲,我知道我应该在 bytes 变量中附加 1-16 个字节,然后再将其传递给 aes 算法。 forge 库中是否内置了这种操作?如果没有,有人可以帮我实现对消息的填充应用吗?

【问题讨论】:

    标签: javascript encryption cryptography forge


    【解决方案1】:

    虽然文档没有提到它,但似乎 AES-CBC 的默认填充是 PKCS#7。见this threadcipherModes.js的cmets

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多