pycrypto,pycrytodome和crypto是乙個東西,crypto在python上面的名字是pycrypto它是乙個第三方庫,但是已經停止更新三年了,所以不建議安裝這個庫;pycryptodome是pycrypto的延伸版本,用法和pycrypto 是一模一樣的;所以只需要安裝pycryptodome就可以了
安裝pycryptodome:
pip install pycryptodome
編寫乙個加密解密的元件des.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @date : 2018-10-17 11:18:05
# @author : wangjian
# @link :
# @version : $id$
from crypto.cipher import des
from binascii import b2a_hex, a2b_hex
class mydescrypt: #自己實現的des加密類
def __init__(self, key = ''):
#金鑰長度必須為64位,也就是8個位元組
if key is not '':
self.key = key.encode('utf-8')
else:
self.key = '12345678'.encode('utf-8')
self.mode = des.mode_cbc
# 加密函式,如果text不足16位就用空格補足為16位,
# 如果大於16當時不是16的倍數,那就補足為16的倍數。
def encrypt(self,text):
try:
text = text.encode('utf-8')
cryptor = des.new(self.key, self.mode, self.key)
# 這裡金鑰key 長度必須為16(des-128),
# 24(des-192),或者32 (des-256)bytes 長度
# 目前des-128 足夠目前使用
length = 16 #lenth可以設定為8的倍數
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)
# 因為des加密時候得到的字串不一定是ascii字符集的,輸出到終端或者儲存時候可能存在問題
# 所以這裡統一把加密後的字串轉化為16進製制字串
return b2a_hex(self.ciphertext)
except:
return ""
# 解密後,去掉補足的空格用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 ""
使用:
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)
上述元件使用的是des加密解密,如果你想要進行aes加密解密的話將元件總所以的des換成aes即可,注意:aes加密解密的秘鑰必須是16個位元組而不是8個位元組
使用crypto庫進行python加密解密
Crypto 編譯使用
crypto 庫是乙個用c 編寫的密碼類庫,是乙個自由軟體。有關它的資訊可以訪問以下兩個 更多參考 解壓縮之後,我們會看到裡面包含大量的標頭檔案 原始檔 以及工程檔案,用vs2013開啟cryptest.sln,然後進行編譯 清理 重新生成 即可。編譯完成,會生成cryptest.exe crypt...
Crypto 庫Window下安裝配置
crypto 是開源的密碼演算法的c 庫,提供了常用的加解密函式的介面。它實現了很多的加解密演算法等,比如說des aes rsa等等。這樣一來我們就可以拿其封裝好的函式來用,當然學習一下實現也挺好的,要了解多一點的可以去看一下官網 現在來講它在window下的安裝配置 2.開啟mingw的mysy...
使用python的Crypto模組的AES加密檔案
學了使用crypto模組的aes來加密檔案,現在記錄下來便於後邊兒檢視。在剛開始知道這個模組的時候,連基本的crypto模組的安裝都花了很多很多時間來搞,也不知道什麼情況反正是折騰很久了才安裝起的,記得是包安裝起來了,但使用的時候始終提示找不到crypto.cipher模組。然後怎麼解決的呢?一 把...