亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Java 密碼哈希方法轉化為 JS 實現

將 Java 密碼哈希方法轉化為 JS 實現

冉冉說 2021-11-18 15:49:17
我想翻譯我可以在 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);
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

您可以使用標準的 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 = "[email protected]";


const result = makeHash(password)

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

  .digest('base64')


console.log(result);


查看完整回答
反對 回復 2021-11-18
  • 1 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號