[廢棄,不再維護(hù)]什么是crypto-js
github地址: https://github.com/brix/crypto-js
cryptojs文檔: https://cryptojs.gitbook.io/docs/#encoders
CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法。
CryptoJS是一個(gè)JavaScript加密算法庫,用于在客戶端瀏覽器中執(zhí)行加密和解密操作。它提供了一系列常見的加密算法,如AES、DES、Triple DES、Rabbit、RC4、MD5、SHA-1等等。
Active development of CryptoJS has been discontinued. This library is no longer maintained.
Nowadays, NodeJS and modern browsers have a native Crypto module. The latest version of CryptoJS already uses the native Crypto module for random number generation, since Math.random() is not crypto-safe. Further development of CryptoJS would result in it only being a wrapper of native Crypto. Therefore, development and maintenance has been discontinued, it is time to go for the native crypto module.
根據(jù)官方的建議,現(xiàn)代的 Node.js 和現(xiàn)代瀏覽器已經(jīng)內(nèi)置了原生的 Crypto 模塊,用于進(jìn)行加密和安全操作。原生的 Crypto 模塊提供了更可靠和安全的加密功能,因此,使用原生的 Crypto 模塊是更好的選擇。
如果你的項(xiàng)目需要進(jìn)行加密操作,我建議使用 Node.js 的原生 Crypto 模塊。具體使用方式和 API 可以參考 Node.js 官方文檔中關(guān)于 Crypto 模塊的部分:https://nodejs.org/api/crypto.html
對于瀏覽器端,可以使用 Web Crypto API 來進(jìn)行加密操作。Web Crypto API 是瀏覽器提供的原生加密 API,它提供了一系列的加密算法和操作方法。具體使用方式和 API 可以參考 MDN 文檔中關(guān)于 Web Crypto API 的部分:https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
通過使用原生的 Crypto 模塊,你可以獲得更好的性能和更高的安全性,同時(shí)避免使用不再維護(hù)的 CryptoJS 庫。
安裝依賴
npm install crypto-js
MD5
MD5是一種常用的哈希算法,不可逆。用于將任意長度的消息壓縮成一個(gè)128位的摘要。MD5算法具有以下特點(diǎn):
壓縮性:任意長度的消息都可以被壓縮成一個(gè)128位的摘要。
容易計(jì)算:MD5算法的計(jì)算速度比較快,適用于對大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
抗修改性:對原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
抗碰撞性:對不同的原始數(shù)據(jù),哈希值相同的概率非常小。
const CryptoJS = require("crypto-js");
// 生成隨機(jī)數(shù)
const randomNumber = Math.floor(Math.random() * 1000000).toString();
const md5Value = CryptoJS.MD5(randomNumber).toString();
原生 Web Crypto API
對于瀏覽器端,可以使用 Web Crypto API 來進(jìn)行加密操作。Web Crypto API 是瀏覽器提供的原生加密 API,它提供了一系列的加密算法和操作方法。具體使用方式和 API 可以參考 MDN 文檔中關(guān)于 Web Crypto API 的部分:https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
md5
Web Crypto API 不直接支持 MD5 加密算法。
官方提到了 MD5 的一些特點(diǎn)和安全性問題:
MD5 是一種密碼學(xué)哈希函數(shù),可以生成 128 位(16 字節(jié))的哈希值。然而,由于存在漏洞,MD5 被認(rèn)為是不安全的,并不適合進(jìn)一步使用。官方建議在密碼學(xué)用途中使用更安全的替代算法,如 SHA-256 或 SHA-3。
總結(jié),MD5 不再被認(rèn)為是安全的密碼學(xué)哈希函數(shù),因此不建議在安全敏感的應(yīng)用中使用它。如果你需要進(jìn)行哈希計(jì)算,請考慮使用更安全的替代算法,如 SHA-256。
sha256
async function computeSHA256Hash(data) {
const encoder = new TextEncoder();
const dataBuffer = encoder.encode(data);
const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
return hashHex;
}
function generateAppSecret() {
// 生成隨機(jī)數(shù)
const randomNumber = Math.floor(Math.random() * 1000000).toString();
return computeSHA256Hash(randomNumber);
}
注意:crypto.subtle.digest() 方法需要在 HTTPS 或者 localhost(即本地開發(fā)環(huán)境)下運(yùn)行,這是為了確保在安全的環(huán)境中使用加密功能。這是因?yàn)榧用懿僮魍ǔI婕懊舾械臄?shù)據(jù)和密鑰,為了保護(hù)這些信息不被惡意方截獲和篡改,使用加密功能的網(wǎng)頁必須通過 HTTPS 加密協(xié)議進(jìn)行傳輸。
如果在非 HTTPS 或者 localhost 環(huán)境下運(yùn)行 crypto.subtle.digest() 方法,瀏覽器會(huì)阻止該功能,并拋出錯(cuò)誤。這是為了防止在不安全的環(huán)境中使用加密功能,以免導(dǎo)致安全風(fēng)險(xiǎn)。
因此,在開發(fā)和測試階段,你可以在本地使用 localhost 運(yùn)行你的應(yīng)用程序,或者通過在本地配置 SSL 證書來使用 HTTPS。這樣,就可以在瀏覽器中正常使用 crypto.subtle.digest() 方法。文章來源:http://www.zghlxwxcb.cn/news/detail-849703.html
請注意,當(dāng)你將你的應(yīng)用程序部署到真實(shí)的生產(chǎn)環(huán)境時(shí),你應(yīng)該使用有效的 HTTPS 證書來保證數(shù)據(jù)的安全傳輸。文章來源地址http://www.zghlxwxcb.cn/news/detail-849703.html
到了這里,關(guān)于前端加解密:Web Crypto API 、crypto-js 庫: MD5的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!