JS中常見編碼及加密方式解析
base64
#特征:結(jié)尾可能有"=="號(hào) #編碼 # 想將字符串轉(zhuǎn)編碼成base64,要先將字符串轉(zhuǎn)換成二進(jìn)制數(shù)據(jù) url = "https://www.cnblogs.com/songzhixue/" bytes_url = url.encode("utf-8") str_url = base64.b64encode(bytes_url) # 被編碼的參數(shù)必須是二進(jìn)制數(shù)據(jù) 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')) # 往對(duì)象里傳數(shù)據(jù)加密 ,update只能接受bytes類型 md.update(b'hello') print(md.hexdigest()) 結(jié)果:23b431acfeb41e15d466d75de822307c #編碼加鹽 #2.加鹽 :自己添加的東西和客戶的真密碼一起加密,自己添加的東西可以是動(dòng)態(tài)的 md = hashlib.md5() md.update(b'yan.com') md.update(b'hello') # 加密 print(md.hexdigest()) # 獲取密文
AES
特征:對(duì)稱加密,加密解密用的是同樣的密鑰。對(duì)稱加密是最快速、最簡單的一種加密方式
對(duì)稱加密:適合經(jīng)常發(fā)送數(shù)據(jù)的場(chǎng)合
非對(duì)稱加密:加密和解密用的密鑰是不同的,通常加密解密的速度比較慢,適合偶爾發(fā)送數(shù)據(jù)的場(chǎng)合。優(yōu)點(diǎn)是密鑰傳輸方便。
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、有利于計(jì)算
3、相同的明文塊經(jīng)過加密會(huì)變成相同的密文塊,因此安全性較差
CBC模式:
1、無法并行計(jì)算,性能上不如ECB
2、引入初始化向量IV,增加復(fù)雜度。
3、安全性高
AES的加密流程
1、把明文按照128bit拆分成若干個(gè)明文塊
2、按照選擇的填充模式來填充最后一個(gè)明文塊
3、每個(gè)明文塊利用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的特點(diǎn)、特征
1、有iv的是特征的是CBC工作模式
2、mode和padding標(biāo)示的加密模式、填充方式
iv
:初始向量
mode
:工作模式
padding
:填充方式
Ascii碼
Ascii碼是一種特定的編碼方式,流行于歐洲國家,表達(dá)128常見的字符與操作符,表達(dá)力有限
DES
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,隨后該算法在國際上廣泛流傳開來。
需要注意的是,在某些文獻(xiàn)中,作為算法的DES稱為數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA),已與作為標(biāo)準(zhǔn)的DES區(qū)分開來。
以上就是JS中常見編碼及加密方式解析的詳細(xì)內(nèi)容,更多關(guān)于JS編碼及加密方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS實(shí)現(xiàn)可點(diǎn)擊展開與關(guān)閉的左側(cè)廣告代碼
這篇文章主要介紹了JS實(shí)現(xiàn)可點(diǎn)擊展開與關(guān)閉的左側(cè)廣告代碼,通過鼠標(biāo)onClick事件調(diào)用自定義javascript函數(shù)實(shí)現(xiàn)頁面元素及樣式的顯示與隱藏效果,非常簡單實(shí)用,需要的朋友可以參考下2015-09-09詳解js模板引擎art template數(shù)組渲染的方法
art-template 是一個(gè)簡約、超快的模板引擎。這篇文章主要介紹了詳解js模板引擎art template數(shù)組渲染的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10基于JavaScript怎么實(shí)現(xiàn)讓歌詞滾動(dòng)播放
各種音樂播放器上都有一個(gè)自動(dòng)滾動(dòng)播放歌詞的功能,當(dāng)前滾動(dòng)到的歌詞會(huì)高亮居中顯示,即使歌詞被換行也能正常居中,那么這個(gè)功能基于JavaScript怎么實(shí)現(xiàn)讓歌詞滾動(dòng)播放呢?感興趣的朋友一起看看吧2015-11-11js列舉css中所有圖標(biāo)的實(shí)現(xiàn)代碼
最近在做一個(gè)通用的配置模塊。配置模塊中必然要對(duì)系統(tǒng)的菜單、功能模塊、權(quán)限資源等進(jìn)行配置,為了更好的用戶體驗(yàn),圖標(biāo)是必不可少的!2011-07-07用javascript實(shí)現(xiàn)畫圖效果的代碼
用javascript實(shí)現(xiàn)畫圖效果的代碼...2007-07-07Javascript柯里化實(shí)現(xiàn)原理及作用解析
這篇文章主要介紹了Javascript柯里化實(shí)現(xiàn)原理及作用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10詳解CocosCreator系統(tǒng)事件是怎么產(chǎn)生及觸發(fā)的
這篇文章主要介紹了CocosCreator系統(tǒng)事件是怎么產(chǎn)生及觸發(fā)的,雖然內(nèi)容不少,但是只要一點(diǎn)點(diǎn)抽絲剝繭,具體分析其內(nèi)容,就會(huì)豁然開朗2021-04-04JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能
本文主要介紹了JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能的步驟方法,可兼容所有PC瀏覽器,不兼容手機(jī)端。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02