一:crypto庫(kù)安裝
pycrypto,pycryptodome是crypto第三方庫(kù),pycrypto已經(jīng)停止更新三年了,所以不建議安裝這個(gè)庫(kù);pycryptodome是pycrypto的延伸版本,用法和pycrypto 是一模一樣的;所以只需要安裝pycryptodome就可以了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-548577.html
pip install pycryptodome
二:python使用crypto
1:crypto的加密解密組件des.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Crypto.Cipher import DES
from binascii import b2a_hex, a2b_hex
class MyDESCrypt: #自己實(shí)現(xiàn)的DES加密類
def __init__(self, key = ''):
#密鑰長(zhǎng)度必須為64位,也就是8個(gè)字節(jié)
if key is not '':
self.key = key.encode('utf-8')
else:
self.key = '12345678'.encode('utf-8')
self.mode = DES.MODE_CBC
# 加密函數(shù),如果text不足16位就用空格補(bǔ)足為16位,
# 如果大于16當(dāng)時(shí)不是16的倍數(shù),那就補(bǔ)足為16的倍數(shù)。
def encrypt(self,text):
try:
text = text.encode('utf-8')
cryptor = DES.new(self.key, self.mode, self.key)
# 這里密鑰key 長(zhǎng)度必須為16(DES-128),
# 24(DES-192),或者32 (DES-256)Bytes 長(zhǎng)度
# 目前DES-128 足夠目前使用
length = 16 #lenth可以設(shè)置為8的倍數(shù)
count = len(text)
if count < length:
add = (length - count)
# \0 backspace
# text = text + ('\0' * add)
text = text + ('\0' * add).encode('utf-8')
elif count > length:
add = (length - (count % length))
# text = text + ('\0' * add)
text = text + ('\0' * add).encode('utf-8')
self.ciphertext = cryptor.encrypt(text)
# 因?yàn)镈ES加密時(shí)候得到的字符串不一定是ascii字符集的,輸出到終端或者保存時(shí)候可能存在問(wèn)題
# 所以這里統(tǒng)一把加密后的字符串轉(zhuǎn)化為16進(jìn)制字符串
return b2a_hex(self.ciphertext)
except:
return ""
# 解密后,去掉補(bǔ)足的空格用strip() 去掉
def decrypt(self, text):
try:
cryptor = DES.new(self.key, self.mode, self.key)
plain_text = cryptor.decrypt(a2b_hex(text))
# return plain_text.rstrip('\0')
return bytes.decode(plain_text).rstrip('\0')
except:
return ""
2:crypto組件使用
from . import des
msg = "password is 961223"
key = "12345678" #key值可傳可不傳
des1 = des.MyDESCrypt()
#加密
cipherTxt = des1.encrypt(msg) #返回值為bytes型
print(cipherTxt)
#解密
decTxt = des1.decrypt(cipherTxt); #返回值為str型
print(decTxt)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-548577.html
到了這里,關(guān)于python使用Crypto庫(kù)實(shí)現(xiàn)加密解密的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!