亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

nodejs-md5加鹽到解密比對(duì)

MasonEast / 2027人閱讀

摘要:加密工具模塊提供了加密功能,包括對(duì)的哈希加密解密簽名以及驗(yàn)證功能的一整套封裝。當(dāng)然也是優(yōu)缺點(diǎn)的加密相同的字符是結(jié)果都是相同的碼,會(huì)出現(xiàn)撞庫的風(fēng)險(xiǎn)。

nodejs-crypto 加密工具

crypto 模塊提供了加密功能,包括對(duì) OpenSSL 的哈希、MD5、HMAC、加密、解密、簽名、以及驗(yàn)證功能的一整套封裝。

crypto 常用的MD5

MD5 是一種不可逆的加密算法,目前是最牢靠的加密算法之一,尚沒有能夠逆運(yùn)算的程序被開發(fā)出來,它對(duì)應(yīng)任何字符串都可以加密成一段唯一的固定長度的代碼。
首先,它不可逆,沒有系統(tǒng)的方法可以知道MD5碼原來的文字是什么。
當(dāng)然MD5也是優(yōu)缺點(diǎn)的加密相同的字符是結(jié)果都是相同的碼,會(huì)出現(xiàn)撞庫的風(fēng)險(xiǎn)。
# crypto 導(dǎo)入安裝
對(duì)于nodejs 環(huán)境下

npm i crypto  --save-dev
//js中引入
const crypto = require("crypto");
或者
import crypto from "crypto";

封裝一下 MD5 utils.js

const crypto = require("crypto");
/**
 * hash方法
 *
 * @param {String} e.g.: "md5", "sha1"
 * @param {String|Buffer} s
 * @param {String} [format] "hex","base64". default is "hex".
 * @return {String} 編碼值
 * @private
 */
const hash = (method, s, format) => {
    var sum = crypto.createHash(method);
    var isBuffer = Buffer.isBuffer(s);
    if(!isBuffer && typeof s === "object") {
        s = JSON.stringify(sortObject(s));
    }
    sum.update(s, isBuffer ? "binary" : "utf8");
    return sum.digest(format || "hex");
};

/**
 - md5 編碼
 -  3. @param {String|Buffer} s
 - @param {String} [format] "hex","base64". default is "hex".
 - @return {String} md5 hash string
 - @public
 */
const md5 = (s, format) => {
    return hash("md5", s, format);
};
module.exports = {
    md5
};
MD5 加鹽并且去除鹽校驗(yàn)

江湖險(xiǎn)惡為了防止撞庫的梅超瘋招式,我們登錄時(shí)使用加鹽的方式經(jīng)登陸

## 用戶注冊(cè)時(shí)候 MD5 多次加密

md5(md5(用戶名+ md5(密碼))
多次加密,越多越好

//引入上述封裝的utils.js
import utils from "../utils.js"
let name = "abcd"
let password = "123"
let user_ticket = utils.md5(utils.md5(name + utils.md5(password)))
console.log(user_ticket)  => 3a59492a85438a3a39a30fd0d8103ac5 //加密后的結(jié)果
登錄密碼MD5加鹽

加鹽的方式采用時(shí)間戳的方式,也可以采用其他方式越咸越好,然后在鍋中來回翻炒

好了嚴(yán)規(guī)正傳
同樣采用MD5多次加密規(guī)格另外在加一 時(shí)間戳鹽,登錄的時(shí)候時(shí)間戳也要和其他參數(shù)一并傳入后臺(tái),做解密處理

let name = "abcd"
let password = "123"
var timestamp = Date.parse(new Date()) / 1000
let user_ticket = utils.md5(utils.md5(utils.md5(name + utils.md5(password))) + timestamp)
console.log(user_ticket) =>0b3298cb3c20b08318c185aec803a929  //加鹽的結(jié)果
加鹽解密

上述說到注冊(cè)時(shí)采用MD5多次加密保存數(shù)據(jù),登錄時(shí)使用MD5多次加密在加鹽

let name = "abcd"
let password = "123"
var timestamp = Date.parse(new Date()) / 1000
let load_password = utils.md5(utils.md5(name + utils.md5(password))) //儲(chǔ)存密碼
let user_ticket_client = utils.md5(utils.md5(utils.md5(name + utils.md5(password))) + timestamp) //客戶端密碼
let user_ticket_service = utils.md5(load_password + timestamp) //服務(wù)端再次加密計(jì)算 儲(chǔ)存密碼加 時(shí)間戳
console.log(user_ticket_client == user_ticket_service)  => true //客戶端已經(jīng)加密和服務(wù)端再次加密做對(duì)比
有人的地方就有江湖,江湖險(xiǎn)惡沒有絕對(duì)的安全系統(tǒng),還有格式各樣的加密方式,這次帶我MD5拯救江湖,江湖有緣再見

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/105964.html

相關(guān)文章

  • 當(dāng)我們?cè)谡務(wù)撉岸思用軙r(shí),我們?cè)谡勑┦裁?/b>

    摘要:所以我們今天只談前端加密,一個(gè)部分人認(rèn)為沒有意義的工作。在中,認(rèn)證過程使用了非對(duì)稱加密算法,非認(rèn)證過程中使用了對(duì)稱加密算法。非對(duì)稱加密上文中我們討論了前端的哈希加密以及應(yīng)用的場景。 showImg(https://segmentfault.com/img/bVAhTC); 當(dāng)然在談安全。 前端安全是Web安全的一部分,常見的安全問題會(huì)有XSS、CSRF、SQL注入等,然而這些已經(jīng)在程師...

    wizChen 評(píng)論0 收藏0
  • [轉(zhuǎn)]MD5(1)-安全性與原理

    摘要:沒錯(cuò),年的破解就是證明了在碰撞上面不可靠,也就是可以通過某種方式快速的找到具有相同散列值的另一個(gè)信息。好,第二個(gè)不安全的誤區(qū)來了上述破解過程對(duì)于絕大多數(shù)散列函數(shù)來說,基本上都是一個(gè)道理。 轉(zhuǎn)載請(qǐng)注明出處 http://www.paraller.com 原文排版地址 點(diǎn)擊獲取更好閱讀體驗(yàn) 轉(zhuǎn)載: http://blog.sina.com.cn/s/blog_77e8d1350100w...

    ideaa 評(píng)論0 收藏0
  • 給你的密碼加鹽

    摘要:第三階段這種方式是在實(shí)習(xí)中學(xué)習(xí)到的,也就是對(duì)密碼來進(jìn)行加鹽。什么是加鹽在密碼學(xué)中,是指通過在密碼任意固定位置插入特定的字符串,讓散列后的結(jié)果和使用原始密碼的散列結(jié)果不相符,這種過程稱之為加鹽。 寫在前面 本文描述了本人,對(duì)于數(shù)據(jù)庫中如何保存密碼的認(rèn)識(shí)過程。從最簡單的明文保存到密碼加鹽保存,下面與大家分享下: 第一階段 最開始接觸web開發(fā)時(shí),對(duì)于用戶表的密碼基本是明文保存,如: use...

    Y3G 評(píng)論0 收藏0
  • 常見https,SSH協(xié)議和MD5加密方式分析

    摘要:前言協(xié)議和加密是前端可能會(huì)接觸到的加密所以我就將他們進(jìn)行了一個(gè)歸納原理就是在加入層是安全的基礎(chǔ)協(xié)議是在基礎(chǔ)上加了協(xié)議使用端口是端口由網(wǎng)景公司開發(fā)并內(nèi)置在瀏覽器中作用建立一個(gè)信息安全通道來保證數(shù)據(jù)傳輸?shù)陌踩_認(rèn)網(wǎng)站的真實(shí)性可以查看網(wǎng)站認(rèn)證的真 前言 https,SSH協(xié)議和MD5加密是前端可能會(huì)接觸到的加密,所以我就將他們進(jìn)行了一個(gè)歸納. 1.https 1.1原理 A.就是在http加...

    3fuyu 評(píng)論0 收藏0
  • 常見https,SSH協(xié)議和MD5加密方式分析

    摘要:前言協(xié)議和加密是前端可能會(huì)接觸到的加密所以我就將他們進(jìn)行了一個(gè)歸納原理就是在加入層是安全的基礎(chǔ)協(xié)議是在基礎(chǔ)上加了協(xié)議使用端口是端口由網(wǎng)景公司開發(fā)并內(nèi)置在瀏覽器中作用建立一個(gè)信息安全通道來保證數(shù)據(jù)傳輸?shù)陌踩_認(rèn)網(wǎng)站的真實(shí)性可以查看網(wǎng)站認(rèn)證的真 前言 https,SSH協(xié)議和MD5加密是前端可能會(huì)接觸到的加密,所以我就將他們進(jìn)行了一個(gè)歸納. 1.https 1.1原理 A.就是在http加...

    Alfred 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<