为了账号安全,请及时绑定邮箱和手机立即绑定

将Java密码哈希方法翻译为JS实现

将Java密码哈希方法翻译为JS实现

神不在的星期二 2023-10-19 18:22:46
我想翻译 Blynk IoT 软件中使用的 Java 代码密码哈希,我可以在 Express.js 应用程序中使用它。谢谢你的帮助!Java代码: https: //www.onlinegdb.com/HJe19lyFBimport java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Base64;public class Main {    public static void main(String[] args){        System.out.println(makeHash("password","mail@gmail.com"));     }    private static final String SHA_256 = "SHA-256";    private Main() {        try {            MessageDigest.getInstance(SHA_256);        } catch (NoSuchAlgorithmException e) {        }    }    public static String makeHash(String password, String salt) {        try {            MessageDigest md = MessageDigest.getInstance(SHA_256);            md.update(password.getBytes(StandardCharsets.UTF_8));            byte[] byteData = md.digest(makeHash(salt.toLowerCase()));            return Base64.getEncoder().encodeToString(byteData);        } catch (Exception e) {            //ignore, will never happen.        }        return password;    }    private static byte[] makeHash(String val) throws NoSuchAlgorithmException {        return MessageDigest.getInstance(SHA_256).digest(val.getBytes(StandardCharsets.UTF_8));    }}目前不起作用的解决方案: https ://repl.it/@patryk0493/blynk-password-hashing
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以使用标准 Node.js加密模块重新实现 Java 密码哈希:


const crypto = require('crypto');


const makeHash = (data) => {

  const hash = crypto.createHash('sha256');

  return hash.update(data, 'utf8');

}


const password = "password";

const salt = "mail@gmail.com";


const result = makeHash(password)

  .update(makeHash(salt).digest())

  .digest('base64')


console.log(result);


查看完整回答
反对 回复 2023-10-19
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信