encryption - 带有 mysql 和 Python 的 AES CBC
问题描述
我正在编写一个在 Python 中存储密码的小程序。我使用模块访问数据库Mysqldb
。我想用 加密密码AES 256 with CBC
。我正在尝试使用 SQLAES_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()
...
解决方案
推荐阅读
- node.js - Docker - 卷解释
- csv - 你如何用逗号组合两个点云?
- flutter - 如何使用 Android Studio 在 Flutter 项目中运行单个 Dart 文件?
- python - 如何拆分数组列表并在python中切换数组的位置
- react-native - 如何在一台手机的不同屏幕上测试反应原生屏幕 UI
- node.js - 我收到 Nodejs 错误 EPERM:3000 的原因是什么?
- django - 通过 Github 将 Django 应用程序部署到 Azure 时禁用 collectstatic 命令
- ruby - 厨师客户端跳过包安装在气隙服务器上
- asp.net - 触发路径过滤器不会使管道自动化
- javascript - React:如何将表单验证从所有字段的 onSubmit 验证更改为表单中每个字段的 onBlur 即时验证?