我想翻譯我可以在 Express.js 應用程序中使用的 Blynk IoT 軟件中使用的 Java 代碼密碼哈希。謝謝你的幫助!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","[email protected]")); } 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-hashingconst btoa = require('btoa');var util = require('util');const KJUR = require('jsrsasign');const password = 'password';const email = '[email protected]';const options = {"alg": "sha256", "prov": "cryptojs"}makeHash = (str) => { const md = new KJUR.crypto.MessageDigest(options); return md.digestString(new util.TextEncoder().encode(str.toLowerCase()))}const md = new KJUR.crypto.MessageDigest(options);md.updateString(new util.TextEncoder().encode(password));const byteData = md.digest(makeHash(email.toLowerCase()));const base64 = btoa(byteData)console.log(base64);
將 Java 密碼哈希方法轉化為 JS 實現
冉冉說
2021-11-18 15:49:17