JS中常見編碼及加密方式解析
base64
#特征:結尾可能有"=="號 #編碼 # 想將字符串轉編碼成base64,要先將字符串轉換成二進制數據 url = "https://www.cnblogs.com/songzhixue/" bytes_url = url.encode("utf-8") str_url = base64.b64encode(bytes_url) # 被編碼的參數必須是二進制數據 print(str_url) b'aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vc29uZ3poaXh1ZS8=' #解碼 # 將base64解碼成字符串 import base64 url = "aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vc29uZ3poaXh1ZS8=" str_url = base64.b64decode(url).decode("utf-8") print(str_url) 'https://www.cnblogs.com/songzhixue/'
Md5
#注意:md5是哈希,不是加密 #特征:32位 #1.編碼 md = hashlib.md5() # 加密,不可逆 md.update('hello'.encode('utf-8')) # 往對象里傳數據加密 ,update只能接受bytes類型 md.update(b'hello') print(md.hexdigest()) 結果:23b431acfeb41e15d466d75de822307c #編碼加鹽 #2.加鹽 :自己添加的東西和客戶的真密碼一起加密,自己添加的東西可以是動態(tài)的 md = hashlib.md5() md.update(b'yan.com') md.update(b'hello') # 加密 print(md.hexdigest()) # 獲取密文
AES
特征:對稱加密,加密解密用的是同樣的密鑰。對稱加密是最快速、最簡單的一種加密方式
對稱加密:適合經常發(fā)送數據的場合
非對稱加密:加密和解密用的密鑰是不同的,通常加密解密的速度比較慢,適合偶爾發(fā)送數據的場合。優(yōu)點是密鑰傳輸方便。
AES的三要素
密鑰:128、192、256
填充:
NoPadding
PKCS7Padding
ZeroPadding
AnsiX923
lso10126
lso97971
工作模式:
CBC、ECB、CTR、CFB、OFB
AES工作模式區(qū)別
工作模式:
CBC、ECB、CTR、CFB、OFB
ECB模式:
1、簡單
2、有利于計算
3、相同的明文塊經過加密會變成相同的密文塊,因此安全性較差
CBC模式:
1、無法并行計算,性能上不如ECB
2、引入初始化向量IV,增加復雜度。
3、安全性高
AES的加密流程
1、把明文按照128bit拆分成若干個明文塊
2、按照選擇的填充模式來填充最后一個明文塊
3、每個明文塊利用AES加密器和密鑰,加密成密文塊
JS-AES、base64、SHA256、RSA等加解密庫
#利用nodejs中的crypto-js庫 var CryptoJS = require("crypto-js") CryptoJS.AES.encrypt(text,CryptoJS.enc.UTF8.parse(key),data={})
AES的特點、特征
1、有iv的是特征的是CBC工作模式
2、mode和padding標示的加密模式、填充方式
iv
:初始向量
mode
:工作模式
padding
:填充方式
Ascii碼
Ascii碼是一種特定的編碼方式,流行于歐洲國家,表達128常見的字符與操作符,表達力有限
DES
DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標準局確定為聯(lián)邦資料處理標準(FIPS),并授權在非密級政府通信中使用,隨后該算法在國際上廣泛流傳開來。
需要注意的是,在某些文獻中,作為算法的DES稱為數據加密算法(Data Encryption Algorithm,DEA),已與作為標準的DES區(qū)分開來。
以上就是JS中常見編碼及加密方式解析的詳細內容,更多關于JS編碼及加密方式的資料請關注腳本之家其它相關文章!
相關文章
詳解CocosCreator系統(tǒng)事件是怎么產生及觸發(fā)的
這篇文章主要介紹了CocosCreator系統(tǒng)事件是怎么產生及觸發(fā)的,雖然內容不少,但是只要一點點抽絲剝繭,具體分析其內容,就會豁然開朗2021-04-04