欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS常見加解密算法小結(jié)

 更新時(shí)間:2023年12月26日 08:41:13   作者:用戶59563584462  
在Web開發(fā)中,保護(hù)用戶數(shù)據(jù)是至關(guān)重要的,而對(duì)數(shù)據(jù)進(jìn)行加密是其中一種有效手段,本文將深入淺出地介紹常見的加解密算法,包括消息摘要算法、對(duì)稱加密算法以及非對(duì)稱加密算法,需要的朋友可以參考下

消息摘要算法

消息摘要算法

消息摘要算法是一種單向散列函數(shù),常用于加密和數(shù)據(jù)完整性驗(yàn)證。常見的消息摘要算法包括MD5、SHA-1、SHA-256和SHA-512等。它的特點(diǎn)是對(duì)不同的明文生成唯一且定長(zhǎng)的密文,是不可逆的,即無法通過“密文”還原出明文。

md5

const CryptoJs = require('crypto-js');
let password = "123456";
let encPwd = CryptoJs.MD5(password).toString();
console.log(encPwd);  // e10adc3949ba59abbe56e057f20f883e

sha1

const CryptoJs = require('crypto-js');
let password = "123456";
let encPwd = CryptoJs.SHA1(password).toString();
console.log(encPwd);  // 7c4a8d09ca3762af61e59520943dc26494f8941b

對(duì)稱加密算法

對(duì)稱加密算法

對(duì)稱加密算法是一種加密技術(shù),它使用相同的密鑰(稱為對(duì)稱密鑰)同時(shí)用于加密和解密數(shù)據(jù)。常見的加密算法有DESAES、3DES等。AES是一種廣泛使用的對(duì)稱加密算法,被認(rèn)為是目前最安全的對(duì)稱加密算法之一。

AES-ECB

let password = "123456";
let key = "1234567890abcdef"
cfg = {
 mode: CryptoJs.mode.ECB,
 padding: CryptoJs.pad.Pkcs7
}
let encPwd = CryptoJs.AES.encrypt(password, key, cfg).toString()
console.log(encPwd)  // U2FsdGVkX1+meKI+IXd44qgc50bKb2rDbN91OutwBWs=

根據(jù)密鑰長(zhǎng)度的不同, 可以把AES加密算法分為AES-128/AES-192/AES-256。也就是說密鑰的長(zhǎng)度必須是16/24/32個(gè)字節(jié) 。常見mode模式有CBC、ECB兩種,這兩種模式的區(qū)別在于是否需要配置iv向量

AES-CBC

const CryptoJs = require('crypto-js');
let password = CryptoJs.enc.Utf8.parse("123456")  // 指定以什么編碼方式解析明文
let key = CryptoJs.enc.Utf8.parse("1234567890abcdef")
let iv = CryptoJs.enc.Utf8.parse("123456")  // 需指定初始向量
cfg = {
 mode: CryptoJs.mode.CBC,
 padding: CryptoJs.pad.Pkcs7,
 iv: iv
}
let encPwd = CryptoJs.AES.encrypt(password, key, cfg).toString()

非對(duì)稱加密算法

非對(duì)稱加密算法

非對(duì)稱加密算法是一種密碼學(xué)中的加密方式,也被稱為公鑰加密算法。與對(duì)稱加密算法不同,非對(duì)稱加密算法使用一對(duì)密鑰,分別是公鑰和私鑰。非對(duì)稱加密算法的一個(gè)關(guān)鍵特性是,使用公鑰加密的數(shù)據(jù)只能由相應(yīng)的私鑰解密,而使用私鑰加密的數(shù)據(jù)只能由相應(yīng)的公鑰解密。常見的非對(duì)稱加密算法包括RSA和ECC等

公鑰可以公開分享的密鑰,用于加密數(shù)據(jù)。任何人都可以獲得公鑰,但不能由公鑰推導(dǎo)出私鑰。

私鑰是保密的密鑰,用于解密由公鑰加密的數(shù)據(jù)。只有私鑰的持有者能夠解密使用公鑰加密的信息。

RSA

window = global
const JSEncrypt = require('jsencrypt')
publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnX3j/luQG7JnPFIFJKEvPC/tFtv14XIzT7FQXYpKsOt2t4uLh6hZa5H5WcEinF46nc91UbrS5UA9Fnnm+Ev20pwUEPVu4On47am6vJOsq8oqQoZDsMu6VGZIzKIm8vDylO6I2xrTaXY2G3hdiRKF7988tA4oYsFOTZ/yG/BOlNwIDAQAB'
// 加密
let jse = new JSEncrypt()
jse.setPublicKey(publickey)
var encStr = jse.encrypt('123456')
console.log("加密數(shù)據(jù): " + encStr)
// 解密
privatekey = 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKdfeP+W5Absmc8UgUkoS88L+0W2/XhcjNPsVBdikqw63a3i4uHqFlrkflZwSKcXjqdz3VRutLlQD0Weeb4S/bSnBQQ9W7g6fjtqbq8k6yryipChkOwy7pUZkjMoiby8PKU7ojbGtNpdjYbeF2JEoXv3zy0DihiwU5Nn/Ib8E6U3AgMBAAECgYA6KW0stEytM08HrQJ4X65oVquMwFg4mUC+7CMUtUZu303lfTCGfQgjsb9NXluA5SjHe/Xvv0DCHNYRxU5dBNBwhIXaRLy6zLKKKp/0gOn1C3dFY/MQOVoEpJ8uxUQh9Kf37F5J9gT64JNooKTTNydqTcmfIhG/u3WFiTVjfW5sEQJBANmvAgUneA6eEC6LwhX9gxdp0T2S+hop19zAm4ErHQld47TlSAxVgwArQG4oJ5J2OWlIT4vzuO1OJOaCj4wZYXMCQQDE1W0uZA1YtjVK7OUuD3f/rgNzolpc0XEEZDPxKsoirEFgW/cFNCTJKIdGK2RgnthLWiN01a9bL6+sF2vLO2wtAkAd0h3Cuv91cS3iUn8KKCqXQIXLm6DriKPrt+8VqORXbidNlsNh/SzvDv3KmXGiXNPMmn1bPM4upC/l7CjiFnAFAkBnmu+dO4zK5R2oEomPdRT0v+OROiPWN2gFp7iveJZtKb4/uiiL1KaIO4z4ol5zfSjcgNWo6dEjbjZJnwpeLykBAkAY/tYLGyrHe0isoZL2xXPlrvde2tbKcbzMrheH1wuqEMX0o0+uHCyFgn2rAzMcfUlntb9iZLLJDkJ+bFET1j3l'
jse.setPrivateKey(privatekey)
var Str = jse.decrypt(encStr)
console.log("解密數(shù)據(jù): " + Str)

本文介紹了Web開發(fā)中常見的加解密算法,包括消息摘要、對(duì)稱加密和非對(duì)稱加密。這些算法在保障用戶數(shù)據(jù)安全、通信加密方面發(fā)揮著關(guān)鍵作用。深入理解它們有助于開發(fā)者選擇合適的安全策略,確保系統(tǒng)的完整性和用戶隱私的最大保護(hù)。在數(shù)字化時(shí)代,掌握這些加密技術(shù)是構(gòu)建可信賴Web應(yīng)用系統(tǒng)的重要一環(huán)。

以上就是JS常見加解密算法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于JS加解密算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS監(jiān)聽一個(gè)變量改變的兩種方法

    JS監(jiān)聽一個(gè)變量改變的兩種方法

    在業(yè)務(wù)中,由于項(xiàng)目采用微前端架構(gòu),需要通過A應(yīng)用的某個(gè)值的變化對(duì)B應(yīng)用中的DOM進(jìn)行改變(如彈出一個(gè)Modal),第一個(gè)想到的可能是發(fā)布訂閱模式,其實(shí)不如將問題縮小化,采用原生的能力去解決,本文介紹了兩種方法來使用JS監(jiān)聽一個(gè)變量改變,需要的朋友可以參考下
    2023-11-11
  • JavaScript自定義超時(shí)API代碼實(shí)例

    JavaScript自定義超時(shí)API代碼實(shí)例

    這篇文章主要介紹了JavaScript自定義超時(shí)API代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 一文教你徹底學(xué)會(huì)JavaScript手寫防抖節(jié)流

    一文教你徹底學(xué)會(huì)JavaScript手寫防抖節(jié)流

    其實(shí)防抖和節(jié)流不僅僅在面試中會(huì)讓大家手寫,在實(shí)際項(xiàng)目中也可以起到性能優(yōu)化的作用,所以還是很有必要掌握的。本文就帶大家徹底學(xué)會(huì)JavaScript手寫防抖節(jié)流,需要的可以參考一下
    2022-11-11
  • JavaScript實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)

    JavaScript實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)

    條碼是一種以機(jī)器可讀的可視形式表示數(shù)據(jù)的方法,我們可以從條碼獲取二進(jìn)制數(shù)據(jù),并通過不同方法去讀碼,下面我們就來看看如何實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)吧
    2024-03-03
  • JS中的一些常用的函數(shù)式編程術(shù)語(yǔ)

    JS中的一些常用的函數(shù)式編程術(shù)語(yǔ)

    這篇文章主要介紹了JS中的一些常用的函數(shù)式編程術(shù)語(yǔ),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,
    2019-06-06
  • JS的數(shù)組的擴(kuò)展實(shí)例代碼

    JS的數(shù)組的擴(kuò)展實(shí)例代碼

    從無憂轉(zhuǎn)過來的數(shù)組的擴(kuò)展 ,非常不錯(cuò)的把javascript數(shù)組的擴(kuò)展
    2008-07-07
  • webpack本地開發(fā)環(huán)境無法用IP訪問的解決方法

    webpack本地開發(fā)環(huán)境無法用IP訪問的解決方法

    下面小編就為大家分享一篇webpack本地開發(fā)環(huán)境無法用IP訪問的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 一文詳解Webpack中Tapable事件機(jī)制

    一文詳解Webpack中Tapable事件機(jī)制

    Webpack?是前端工程化常用的靜態(tài)模塊打包工具,在合適的時(shí)機(jī)通過?Webpack?提供的?API?改變輸出結(jié)果,使?Webpack?可以執(zhí)行更廣泛的任務(wù),擁有更強(qiáng)的構(gòu)建能力,本文將介紹?Tapable?的基本使用以及底層實(shí)現(xiàn),需要的朋友可以參考下
    2023-11-11
  • 使用JavaScript制作待辦事項(xiàng)列表的示例代碼

    使用JavaScript制作待辦事項(xiàng)列表的示例代碼

    這篇文章主要介紹了如何使用 JavaScript創(chuàng)建待辦事項(xiàng)列表HTML的完整信息和教程,文中但是示例代碼講解詳細(xì),感興趣的同學(xué)可以動(dòng)手試一試
    2022-01-01
  • js中傳遞特殊字符(+,&)的方法

    js中傳遞特殊字符(+,&)的方法

    這篇文章主要介紹了js中傳遞特殊字符(+,&)的方法,有需要的朋友可以參考一下
    2014-01-01

最新評(píng)論