使用Crypto庫進行Python加密解密

2021-10-05 10:24:52 字數 2457 閱讀 9399

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模組。然後怎麼解決的呢?一 把...