Проблемы с пониманием длины битов и строковых битов в Javascript / Typescript с Crypto-JS - PullRequest
1 голос
/ 12 июля 2019

Я немного растерялся на этом ...

У меня есть специальный ключ, который мне нужно отправить на устройство в указанном формате, и я знаю, что то, что я делаю, неправильно - очевидно,потому что мне не хватает базовых знаний о битовых вещах в Javascript.

Первый шаг - генерировать случайное 128-битное число.Поскольку afaik JS-символы 16-битные, следующий код должен сгенерировать 128-битную строку, не так ли?

private generateSeed()
{
  let result = '';

  for(let i = 0; i < 8; i++)
    result += ((Math.random() * 10) - 1).toString();

  return result;
}

После этого мне нужно объединить начальное число и ключ, рассчитать SHA1 этого иПадд, что SHA1 до 192 бит с нулями.

enter image description here

private generateAKey(seed: string)
  {
    const Provided_KEY = '[32 random characters are in here]';
    let concat = seed + Provided_KEY;

    let sha1 = crypto.SHA1(concat).toString();
    console.log(`SHA1: ${sha1} , Length: ${sha1.length}`);

    // Padd to 192 bit/24 bytes
    while(sha1.length < 12)
      sha1 += '0';

    return sha1;
  }

Но я полностью потерян здесь.Я почти уверен, что ошибаюсь с этим.Также, поскольку SHA1, который я вычисляю с помощью crypto-js, уже имеет длину 40 символов, для меня это не имеет смысла.

Как мне правильно это сделать?

...