如何确定使用PBKDF2_HMAC_SHA1派生的密钥包含我需要的资产?

时间:2019-05-27 15:03:40

标签: javascript encryption sjcl

我需要加密两个设备的本地通信。我需要派生一个加密密钥来保护此类设备之间的通信。要导出加密密钥,双方必须:

  1. 共享一个可变长度的密钥以导出密钥材料。
  2. 使用PBKDF2_HMAC_SHA1导出密钥

此刻,我正在使用斯坦福Javascript加密库(sjcl),并且能够导出密钥。

const hmacSHA1 = function(key) {
    const hasher = new sjcl.misc.hmac(key, sjcl.hash.sha1);
    this.encrypt = function() {
      return hasher.encrypt.apply(hasher, arguments);
    };
  };

  const derivedKey = sjcl.misc.pbkdf2('password', passwordSalt, 100, 256, hmacSHA1);
  const hexKey = sjcl.codec.hex.fromBits(derivedKey);
  console.log(derivedKey, hexKey);
});

我期望派生的密钥材料包括80个字节:一个32字节的密码密钥,一个32字节的HMAC密钥和一个16字节的初始化向量(IV)。 IV与在加密时每条消息生成的随机随机数进行异或。

我如何确保获得了具有预期字节长度的预期资产?据我所知,sjcl已经应用了初始化向量IV。

0 个答案:

没有答案