本文主要关注python代码实现,加密算法使用AES,加密模式CBC。
mysql库表请大家自行创建。
import pymysql
from Crypto.Cipher import AES
from binascii import b2a_hex,a2b_hex
def add_to_16(text):
if len(text.encode('utf-8')) % 16:
add = 16 - (len(text.encode('utf-8')) % 16)
else:
add = 0
text = text + ('\0' * add)
return text.encode('utf-8')
def encrypt(text):
key = 'abcdef0123456789'.encode('utf-8')
mode = AES.MODE_CBC
iv = b'qazwsx0123456789'
text = add_to_16(text)
cryptos = AES.new(key,mode,iv)
cipher_text = cryptos.encrypt(text)
return b2a_hex(cipher_text)
def decrypt(text):
key = 'abcdef0123456789'.encode('utf-8')
mode = AES.MODE_CBC
iv = b'qazwsx0123456789'
text = add_to_16(text)
cryptos = AES.new(key,mode,iv)
plain_text = cryptos.decrypt(a2b_hex(text))
return bytes.decode(plain_text).rstrip('\0')
encryt_info = encrypt('confidentialinfo').decode('utf-8')
db =
pymysql.connect(host='127.0.0.1',user='root',password='123456',database='mysql')
cursor = db.cursor()
sql = "insert into person(id,name,age,info) values(001,'tom',18,'%s');" % encryt_info
try:
cursor.execute(sql)
db.commit()
except pymysql.Error as e:
print(e)
db.rollback()
db.close()