使用mysql和Python的AES CBC

时间:2018-06-16 08:42:39

标签: encryption aes mysql python

我正在编写一个用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模块更好地加密所有数据并将数据插入数据库已加密?

修改

似乎如果我每次都添加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()
            ...

0 个答案:

没有答案