Как я могу определить, что производный ключ с использованием PBKDF2_HMAC_SHA1 содержит необходимые мне ресурсы? - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно зашифровать локальную связь двух устройств.Мне нужно получить ключ шифрования для безопасной связи между такими устройствами.Чтобы получить ключ шифрования, обе стороны должны:

  1. Поделиться секретом переменной длины для получения материала ключа.
  2. Получите ключ, используя PBKDF2_HMAC_SHA1

В настоящее время я использую Stanford Javascript Crypto Library (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 XORed со случайным одноразовым номером, который генерируется для каждого сообщения при шифровании.

Как я могу убедиться, что получаю ожидаемые активы с ожидаемой длиной байта?Насколько я знаю, sjcl уже применяет вектор инициализации IV.

...