我正在写一个用python存储密码的小程序。我可以用 Mysqldb
模块。我想用密码加密 AES 256 with CBC
. 我正在尝试用sql来实现这一点 AES_ENCRYPT
功能。
我将cbc模式设置为: mysql> SET block_encryption_mode = 'aes-256-cbc';
在python中,我有:
def add_password(self, table, site, password, key, iv):
try:
query = "INSERT INTO " +table+ " (sites, password) VALUES (AES_ENCRYPT(%s, %s, %s), AES_ENCRYPT(%s,%s,%s) )"
self.cursor.execute(query, ( site, key, iv, password, key, iv))
self.conn.commit()
...
但是,如果你运行我得到的程序: Warning: <IV> option ignored
,就好像函数使用ecb模式一样(所以没有iv)。
我哪里错了?
可能的方法:或者最好用python模块加密所有数据,并将已经加密的数据插入db中?
编辑
如果我每次都加上 SET block_encryption_mode = 'aes-256-cbc'
,全部炒菜。
def add_password(self, table, site, password, key,iv):
try:
query = "SET block_encryption_mode = 'aes-256-cbc'"
self.cursor.execute(query)
query = "INSERT INTO " +table+ " (sites, password) VALUES (AES_ENCRYPT(%s, %s, %s), AES_ENCRYPT(%s,%s,%s) )"
self.cursor.execute(query, ( site, key,iv, password, key, iv))
self.conn.commit()
...
暂无答案!
目前还没有任何答案,快来回答吧!