我们正在寻找一种传统的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 ......甚至没有一次。
答案 0 :(得分:1)
嗯,事实证明这比看起来容易得多。以下代码有效:
def encryptPassword(password: String): String = {
val in = (password + secret).map(_.toByte.toChar).mkString("")
Hashing.sha256().hashString(in, Charsets.UTF_8).toString
}
谢谢@stefanobaghino