python實現AES演算法

2021-08-04 07:41:45 字數 1590 閱讀 1347

#!/usr/bin/python

#-*- coding:utf-8-*-

from crypto.cipher import aes

from binascii import b2a_hex,a2b_hex

class

aes():

#自己實現了乙個aes類,用於aes的加密和解密

def__init__

(self,key,mode):

#key為aes秘鑰,mode為加密模式

self.key = key

self.mode = mode

defencrypt

(self,text,count):

#text的為要加密的文字或者二進位製流,count為加密資料的長度

cryptor = aes.new(self.key,self.mode,b'0000000000000000')

length = 16

if count < length:

add = (length-count)

#\0 backspace

text = text + ('\0' * add)

elif count > length:

add = (length-(count % length))

text = text + ('\0' * add)

self.ciphertext = cryptor.encrypt(text)

return b2a_hex(self.ciphertext)#將記憶體中的資料已16進製制字串列印出來

defdecrypt

(self,ciphertext):

#ciphertext型別為16進製制字串如:"fa0345da",一般為32個位元組長度

cryptor = aes.new(self.key,self.mode,b'0000000000000000')

plaintext = cryptor.decrypt(a2b_hex(ciphertext))#將秘鑰轉換為二進位製流

return plaintext#返回值為二進位製流,因為有很多不可列印字元

defmain

(): key = '1234567890123456'

#秘鑰的長度必須為16

cryptor = aes(key,aes.mode_ecb)#這裡選用的是ecb模式

msg = 'helloworld'

#加密字串

cipher = cryptor.encrypt(msg,len(msg)) #返回值是記憶體中的16進製制字串

print cipher

plaintext = cryptor.decrypt(cipher)#解密函式,秘鑰在aes初始化的時候設定好了,aes是對稱加密的,加密的秘鑰和解密的秘鑰是一樣的

java實現AES演算法

private static final int bit 128 public static void main string args catch transformerexception e system.out.println time system.nanotime start 1000 1...

AES演算法分析與實現

aes演算法的主要數學基礎是抽象代數,其中演算法中的許多運算是按單位元組 8bits 和4 位元組 32bits 定義的,單位元組可看成有限域 gf 28 中的乙個元素,而 4位元組則可以看成係數在 gf 28 中並且次數小於 4的多項式 亦可以理解為 gf 2564 單位元組上的運算有兩種 有限域...

AES密碼演算法C實現

做實驗並寫實驗報告。修改例程cryptodemo.cpp為encfile.cpp 從命令列接受3個字串型別的引數 引數1,引數2,引數 3。引數1 encrypt表示加密,引數2 decrypt表示解密 引數2為待加密 解密的檔名 引數3為密碼。1 修改映象源為科大的,然後更新所有應用 sudo v...