亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS常見加解密算法小結

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

消息摘要算法

消息摘要算法

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

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

對稱加密算法

對稱加密算法

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

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ù)密鑰長度的不同, 可以把AES加密算法分為AES-128/AES-192/AES-256。也就是說密鑰的長度必須是16/24/32個字節(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()

非對稱加密算法

非對稱加密算法

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

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

私鑰是保密的密鑰,用于解密由公鑰加密的數(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ā)中常見的加解密算法,包括消息摘要、對稱加密和非對稱加密。這些算法在保障用戶數(shù)據(jù)安全、通信加密方面發(fā)揮著關鍵作用。深入理解它們有助于開發(fā)者選擇合適的安全策略,確保系統(tǒng)的完整性和用戶隱私的最大保護。在數(shù)字化時代,掌握這些加密技術是構建可信賴Web應用系統(tǒng)的重要一環(huán)。

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

相關文章

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

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

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

    JavaScript自定義超時API代碼實例

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

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

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

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

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

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

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

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

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

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

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

    一文詳解Webpack中Tapable事件機制

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

    使用JavaScript制作待辦事項列表的示例代碼

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

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

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

最新評論