由于最近项目需要对一些比较敏感信息,比如账号信息,不能明文提供用户,需要加密处理,然后使用的时候再由封装好的程序去解密。
1. AES算法简介
AES算法详解:高级加密标准,它是一种对称加密算法,AES只有一个密钥,这个密钥既用来加密,也用于解密。
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB。
从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现。
CBC 和ECB模式的区别就是:
- CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)
- ECB加密不需要iv,只需要key(密钥)
2.模块安装
在 Windows下使用AES时要安装的是pycryptodome 模块
pip install pycryptodome
在 Linux下使用AES时要安装的是pycrypto模块
pip install pycrypto
3.AES的ECB 模式实现
import base64
from Crypto.Cipher import AES
class EncryptDate(object):
def __init__(self):
self.key = "abcx2211230CoJUm".encode("utf-8") # 初始化密钥
self.iv = "9999999999999999".encode("utf-8") # 初始化偏移量
self.length = 16 # 初始化数据块大小
self.aes = AES.new(self.key, AES.MODE_CBC, self.iv) # 初始化AES,ECB模式的实例
# 截断函数,去除填充的字符
self.unpad = lambda s: s[0:-s[-1]]
def pad(self, text):
"""
填充函数,使被加密数据的字节码长度是block_size的整数倍
"""
count = len(text.encode('utf-8'))
add = self.length - (count % self.length)
entext = text + (chr(add) * add)
return entext
def encrypt(self, encrData): # 加密函数
a = self.pad(encrData)
res = self.aes.encrypt(a.encode("utf-8"))
msg = str(base64.b64encode(res), encoding="utf8")
return msg
def decrypt(self, decrData): # 解密函数
res = base64.decodebytes(decrData.encode("utf-8"))
msg_text = self.aes.decrypt(res)
decrypt_text = self.unpad(msg_text).decode('utf8')
return decrypt_text
if __name__ == '__main__':
pwd = '&HKJASBkjs#&1'
pwd1 = EncryptDate().encrypt(pwd)
pwd2 = EncryptDate().decrypt(pwd1)
print('原始密码:',pwd)
print('加密密码:',pwd1)
print('解密密码:',pwd2)

版权声明:本文为CSDN博主「埃菲尔没有塔尖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38819889/article/details/123642201
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
(select 198766*667891 from DUAL)
(select 198766*667891)
@@obbQo
555����%2527%2522\'\"
555'"
555
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
555PgnON339')) OR 340=(SELECT 340 FROM PG_SLEEP(15))--
555LqMMEMFQ') OR 62=(SELECT 62 FROM PG_SLEEP(15))--
555OH7Sghqo' OR 603=(SELECT 603 FROM PG_SLEEP(15))--
555-1)) OR 192=(SELECT 192 FROM PG_SLEEP(15))--
555-1) OR 832=(SELECT 832 FROM PG_SLEEP(15))--
555-1 OR 247=(SELECT 247 FROM PG_SLEEP(15))--
555q7yHNSMc'
555-1 waitfor delay '0:0:15' --
555-1)
555-1
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z
5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z
555*if(now()=sysdate(),sleep(15),0)
-1" OR 5*5=25 or "RpstqKMK"="
-1' OR 5*5=25 or '88FKgrJt'='
-1" OR 5*5=25 --
-1' OR 5*5=25 --
-1 OR 5*5=25
-1 OR 5*5=25 --
555
555
555