AES對稱加解密

2021-10-03 01:23:26 字數 2299 閱讀 7604

python實現aes對稱加解密

關於aes對稱加密的概念網上很多,在此不在贅述,直接上**。

import base64

from crypto.cipher import aes

"""aes加密解密工具類

資料塊128位

key 為16位

iv 為16位

aes加密模式為cbc

填充 pkcs7padding

"""class

myres

(object):

def__init__

(self, key)

: self.key = key

@staticmethod

defpkcs7padding

(text)

: bs = aes.block_size

length =

len(text)

bytes_length =

len(

bytes

(text, encoding=

'utf-8'))

padding_size = length if

(bytes_length == length)

else bytes_length

padding = bs - padding_size % bs

# chr(padding)看與其它語言的約定,有的會使用'\0'

padding_text =

chr(padding)

* padding

return text + padding_text

@staticmethod

defpkcs7unpadding

(text)

: length =

len(text)

unpadding =

ord(text[length-1]

)return text[

0:length-unpadding]

defencrypt

(self, content)

: key_bytes =

bytes

(self.key, encoding=

'utf-8'

) iv = key_bytes

cipher = aes.new(key_bytes, aes.mode_cbc, iv)

content_padding = self.pkcs7padding(content)

encrypt_bytes = cipher.encrypt(

bytes

(content_padding, encoding=

'utf-8'))

result =

str(base64.b64encode(encrypt_bytes)

, encoding=

'utf-8'

)return result

defdecrypt

(self, content)

: key_bytes =

bytes

(self.key, encoding=

'utf-8'

) iv = key_bytes

cipher = aes.new(key_bytes, aes.mode_cbc, iv)

encrypt_bytes = base64.b64decode(content)

decrypt_bytes = cipher.decrypt(encrypt_bytes)

result =

str(decrypt_bytes, encoding=

'utf-8'

) result = self.pkcs7unpadding(result)

return result

if __name__ ==

'__main__'

: text =

"hello world"

myrsa = myres(

"1234567890abcdef"

) encrypt_text = myrsa.encrypt(text)

print

("加密後:"

, encrypt_text)

decrypt_text = myrsa.decrypt(encrypt_text)

print

("解密後:"

, decrypt_text)

AES 對稱加解密

1.生成aes key aes根據密碼生成key param password return public static key createkey string password catch exception e return null 2.aes加密 ecb模式 aes加密操作,使用ecb模式...

AES加解密(對稱)

aes是一種對稱的加密和解密的演算法,其用法如下 package com.zys.demo.util import lombok.extern.slf4j.slf4j import j ax.crypto.cipher import j ax.crypto.spec.ivparameterspec ...

Golang中,Aes加解密

今天在用golang解析php那邊用aes加密的乙個key。網上大多是用base64將結果編碼一下。而且用到了向量。我php 那邊沒有用到向量。所以golang這邊也是要去掉的。參考 的改了下。能夠和php通用。另外,需要注意的是加密的key只能是16,24,32.分別對應的是aes 128,aes...