JS中常見(jiàn)編碼及加密方式解析
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ì)稱加密是最快速、最簡(jiǎn)單的一種加密方式
對(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、簡(jiǎn)單
2、有利于計(jì)算
3、相同的明文塊經(jīng)過(guò)加密會(huì)變成相同的密文塊,因此安全性較差
CBC模式:
1、無(wú)法并行計(jì)算,性能上不如ECB
2、引入初始化向量IV,增加復(fù)雜度。
3、安全性高
AES的加密流程
1、把明文按照128bit拆分成若干個(gè)明文塊
2、按照選擇的填充模式來(lái)填充最后一個(gè)明文塊
3、每個(gè)明文塊利用AES加密器和密鑰,加密成密文塊
JS-AES、base64、SHA256、RSA等加解密庫(kù)
#利用nodejs中的crypto-js庫(kù)
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碼是一種特定的編碼方式,流行于歐洲國(guó)家,表達(dá)128常見(jiàn)的字符與操作符,表達(dá)力有限
DES
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,隨后該算法在國(guó)際上廣泛流傳開(kāi)來(lái)。
需要注意的是,在某些文獻(xiàn)中,作為算法的DES稱為數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA),已與作為標(biāo)準(zhǔn)的DES區(qū)分開(kāi)來(lái)。
以上就是JS中常見(jiàn)編碼及加密方式解析的詳細(xì)內(nèi)容,更多關(guān)于JS編碼及加密方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript設(shè)計(jì)模式之單例模式原理與用法實(shí)例分析
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之單例模式原理與用法,結(jié)合實(shí)例形式分析了單例模式的原理、命名空間的使用、閉包、惰性單例形式以及單例模式的基本應(yīng)用,需要的朋友可以參考下2018-07-07
js 靜態(tài)動(dòng)態(tài)成員 and 信息的封裝和隱藏
一下用面向?qū)ο蟮南嚓P(guān)概念來(lái)解釋js中的仿面向?qū)ο螅驗(yàn)閖s中不像其他語(yǔ)言,不存在面向?qū)ο笳Z(yǔ)言的相關(guān)特性2011-05-05
javascript表單驗(yàn)證使用示例(javascript驗(yàn)證郵箱)
JavaScript可用來(lái)在數(shù)據(jù)被送往服務(wù)器前對(duì)HTML表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證2014-01-01
ie7+背景透明文字不透明超級(jí)簡(jiǎn)單的實(shí)現(xiàn)方法
這篇文章主要介紹了ie7+背景透明文字不透明超級(jí)簡(jiǎn)單的實(shí)現(xiàn)方法,有需要的朋友可以參考一下2014-01-01
微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Js得到radiobuttonlist選中值的兩種方法(推薦)
下面小編就為大家?guī)?lái)一篇Js得到radiobuttonlist選中值的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
基于mpvue小程序使用echarts畫(huà)折線圖的方法示例
這篇文章主要介紹了基于mpvue小程序使用echarts畫(huà)折線圖的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04

