随机字节和编码

时间:2019-02-13 08:23:52

标签: random encoding

我有一个函数,需要一个随机的字节序列作为输入(例如,盐用于哈希密码)。我使用CSPRNG函数生成该字符串,然后编码为base64。
现在,我将该字符串传递给需要它的函数,但是该函数可以使用字节,因此,如果它接收到字符串,则通过将字符串读取为utf8将其转换为字节缓冲区。输入的字符串与使用CSPRNG函数生成的字节序列不同,而是base64编码的随机字节的utf8解码字符串。因此,如果我生成N个字节,则编码转换会将其转换为4/3 * N个字节。我可以假设转换后这些扩展字节仍然是随机的吗?有任何安全隐患吗?

下面是一个伪代码,以使其更清楚:

function needsRandBytes(rand) {
  if (typeof rand == 'string') {
    rand = Buffer.from(rand, 'utf8'); // here's the expansion
  }

  // use the rand bytes...
}

randBytes = generateRandomBytes(N); // cryptographically secure function
randString = randBytes.toString('base64');

needsRandBytes(randString);

0 个答案:

没有答案