php - PHP 和 Node.JS 中西里尔文 sha1 哈希值的差异

标签 php node.js sha

如果我尝试从“ABC”获取 sha1,如果是 PHP 和 Node.JS,它们是相同的。

function sha1(input) {
  return crypto.createHash('sha1').update(input).digest('hex');
};

但是如果我尝试对像这样的西里尔字母进行哈希处理:“ЭЮЯЁ”,它们就不是。

如何解决?

最佳答案

问题很可能是 character set/encodings aren't matching .

如果 PHP 中的字符串是 UTF-8 编码的,您可以通过指定 'utf8' 在 Node.js 中镜像该字符串:

function sha1(input) {
  return crypto.createHash('sha1').update(input, 'utf8').digest('hex');
};
> crypto.createHash('sha1').update('ЭЮЯЁ').digest('hex')
'da7f63ac9a3b5c67c8920871145cb5904f3df29a'
> crypto.createHash('sha1').update('ЭЮЯЁ', 'utf8').digest('hex')
'f78c3521413a8321231e35665f8c4a16550e182a'

'ABC' 将有更好的匹配机会,因为这些都是 ASCII字符和 ASCII 是许多其他字符集的起点。当您超出 ASCII 范围时,您会更经常遇到冲突。

关于php - PHP 和 Node.JS 中西里尔文 sha1 哈希值的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201155/

相关文章:

php - REST API 新手

php - 在 PHP 中将 DateTime 格式显示为可读字符串

PHP "pretty print"HTML(不整洁)

node.js - Express.js、Node.js Jade - 遵循expressjs.com 教程并出现错误

javascript - Expressjs 服务器上的 HTML 按钮运行 node.js 脚本

javascript - 如何为完整性 html 标签生成 SHA?

node.js - 对网站图标静态图像的哈希进行 Mocha 测试失败

php - 拉拉维尔 5.1 : how can i get nested relation from model?

node.js - Node.js 不适合做什么样的任务?

php - 使用随机盐改进密码散列