javascript - 在 Node js 中将文本转换为哈希值

标签 javascript java node.js hashcode

我想使用 Node js 将文本转换为数字的哈希 ID。已经有一个要转换的 java 程序,但要使用 Node js 完成相同类型的实现。

Java 代码

    public static long generateId(String text) {

    byte[] buffer = null;
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("SHA1");
        md.reset();
        buffer = text.getBytes(Charsets.UTF_8);

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    md.update(buffer);
    byte[] digest = md.digest();
    String hexStr = "";
    for (int i = 0; i < digest.length; i++) {
        hexStr += Integer.toString((digest[i] & 0xff) + 0x100, 16).substring(1);
    }
    long hashid = 0;
    for (int i = 0; i < hexStr.length(); i++)
        hashid += Math.abs((long) Math.pow(27, 10 - i) * ('a' - (1 + hexStr.charAt(i))));

    return hashid;
}   

我能够转换成nodejs uptodigest,之后我无法继续。

function generateHashCode()
{
var text = '9/01/2017'+'xx'+'405'+''+'SDD'+'MDD'+'9';
var crypto = require('crypto');
console.log(crypto.createHash('SHA1').update(text).digest("hex"));
var hexDigest = crypto.createHash('SHA1').update(text).digest("hex");
var hexStr;
}

请帮我解决这个问题

最佳答案

function generateHashCode(text)
{
    // assuming text is UTF-8 encoded

    var crypto = require('crypto');
    var hexDigest = crypto.createHash('SHA1').update(text).digest(); // this should be .digest() not .digest('hex')

    var hexStr = "";
    for (var i = 0; i < hexDigest.length; i++) {
        hexStr += (((hexDigest[i] - 0x100) & 0xff) + 0x100).toString(16).substr(1); // fixed some math issues here
    }

    var hashid = 0;
    var a = 'a'.charCodeAt(0); // or just var a = 97;
    for (var i = 0; i < hexStr.length; i++)
        hashid += Math.abs(Math.pow(27, 10 - i) * (a - (1 + hexStr.charCodeAt(i))));

    return hashid;
}

console.log(generateHashCode("batman"));

关于javascript - 在 Node js 中将文本转换为哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035777/

相关文章:

javascript - PageMod 的 Firefox Addon Attach 事件未发出事件

java - 需要 Android 堆按摩

java - GWT 分割点有冗余片段吗?

Java UI 项目外观 FlatLaf

forms - Nodejs POST 请求多部分/表单数据

node.js - Node.js 中的子进程是否可以保留彩色输出?

node.js - Mongoose Mongodb 查询对象数组

javascript - Node js 不读取我的 CSS 文件

javascript - Hub 方法在 hub 类外部不起作用

javascript - 如何让 JSONIX 在反序列化时容忍额外的 XML 元素?