如何解决如何在node.js中获取SHA1哈希的前16个字节?
我正在尝试与Java服务器进行互操作。作为协议的一部分,我需要创建我的内容的SHA1哈希。出于某种原因,仅使用哈希摘要的前16个字节,并以Base64编码。消息摘要是Java中的字节数组,在被Base64编码之前,它被截断为长度16。
如何在节点上的javascript中执行相同的操作?我正在使用内置节点加密,但摘要不只是一个数组。如何访问哈希值并检索前16个字节? 以下代码给了我20个字节:
var crypto = require('crypto');
var hash = crypto.createHash('sha1');
data = hash.update('This is the password','utf-8');
gen_hash= data.digest('base64');
console.log(gen_hash);
解决方法
您可以返回一个Buffer,对其进行切片以获取前16个字节,然后对其进行编码,而不是直接生成Base64编码的输出。
const crypto = require('crypto');
var hash = crypto.createHash('sha1');
data = hash.update('This is the password','utf-8');
gen_hash= data.digest().slice(0,16).toString('base64');
console.log(gen_hash);
切片前的哈希缓冲区如下:
<Buffer f2 ff c3 eb 0e 37 bb 19 91 0a 05 c0 88 d2 e6 0d 6a 0e d5 25>
结果是:
8v / D6w43uxmRCgXAiNLmDQ ==
您的原始代码给出了:
8v / D6w43uxmRCgXAiNLmDWoO1SU =
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。