NodeJS默认为加密和二进制编码

时间:2015-08-12 10:32:46

标签: node.js scala encoding

我们正在寻找一种传统的NodeJS API。我们正在从中提取auth组件。

我们有一个哈希密码的函数,看起来有点像:

var sha256 = crypto.createHash('sha256');
sha256.update(password + secret);
return sha256.digest('hex');

除了像这样的函数明显的安全含义之外,它使用NodeJS的二进制编码进行编码。

如果传入String进行更新,它将使用'binary'作为编码格式。这导致它实际上编码unicode字符,如" Kiełbasa" as" KieBbasa",在SHA256&#39之前。

在我们的Scala代码中,我们现在正在寻找重写此遗留功能,以便我们可以授权旧用户。但是我们找不到在这些具有相同结果输出的字符串上使用的字符集。我们的Scala代码如下:

def encryptPassword(password: String): String = {
  Hashing.sha256().hashString(in, Charsets.UTF_8).toString
}

我们需要in字符串与Node使用的字符串相同,但我们无法弄明白。

想法? Node.js ......甚至没有一次。

1 个答案:

答案 0 :(得分:1)

嗯,事实证明这比看起来容易得多。以下代码有效:

def encryptPassword(password: String): String = {
  val in = (password + secret).map(_.toByte.toChar).mkString("")
  Hashing.sha256().hashString(in, Charsets.UTF_8).toString
}

谢谢@stefanobaghino

相关问题