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)
("加密後:"
, encrypt_text)
decrypt_text = myrsa.decrypt(encrypt_text)
("解密後:"
, 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...