在 Python 代码中使用 Mysql aes_encrypt() 和 aes_decrypt() 函数
Use Mysql aes_encrypt() and aes_decrypt() functions in Python Code
我想使用 MYSQL aes_encrypt() 和 aes_decrypt() 来自 Python 的函数来加密重要信息。我知道,我们可以使用 python crypto functions
来实现这些
我的场景是:
根据 POST 请求,我有不同字段的列表
{
"email" : "abc@gmail.com",
"phone" : "1234567890",
"key1" : "value1",
"key2" : "value2",
"key3" : "value3"
}
这个JSON数据可以变化,例如它也可以有其他键(key5,key6,....)或none。
所以我需要构建一个动态SQL查询,比如
sql = "Insert into dummy.test(email, phone, key1, key2, key3) values(email, phone, AES_ENCRYPT('value1', 'secret key'), AES_ENCRYPT('value2', 'secret key'), AES_ENCRYPT('value3', 'secret key'))"
cursor.execute(sql)
或
values =(email, phone, AES_ENCRYPT('value1', 'secret key'), AES_ENCRYPT('value2', 'secret key'), AES_ENCRYPT('value3', 'secret key')) #TUPLE
sql = "Insert into dummy.test(email, phone, key1, key2, key3) values(%s,%s,%s,%s,%s)"
cursor.execute(sql,values)
是否有任何可能的方法来实现上述任何一种方式。?
这是好方法吗?
谢谢
因为 AES_ENCRYPT
是一个 MySQL 而 不是 一个 Python 函数并且为了避免 SQL 注入攻击,你需要这样做:
sql = """Insert into dummy.test(email, phone, key1, key2, key3)
values(%s, %s, AES_ENCRYPT(%s, 'secret key'), AES_ENCRYPT(%s, 'secret key'), AES_ENCRYPT(%s, 'secret key'))"""
cursor.execute(sql, (email_value, phone_value, key1_value, key2_value, key3_value))
其中 email_value
、phone_value
等是分别为表单字段 email
、phone
等发布的值
我想使用 MYSQL aes_encrypt() 和 aes_decrypt() 来自 Python 的函数来加密重要信息。我知道,我们可以使用 python crypto functions
来实现这些我的场景是: 根据 POST 请求,我有不同字段的列表
{
"email" : "abc@gmail.com",
"phone" : "1234567890",
"key1" : "value1",
"key2" : "value2",
"key3" : "value3"
}
这个JSON数据可以变化,例如它也可以有其他键(key5,key6,....)或none。 所以我需要构建一个动态SQL查询,比如
sql = "Insert into dummy.test(email, phone, key1, key2, key3) values(email, phone, AES_ENCRYPT('value1', 'secret key'), AES_ENCRYPT('value2', 'secret key'), AES_ENCRYPT('value3', 'secret key'))"
cursor.execute(sql)
或
values =(email, phone, AES_ENCRYPT('value1', 'secret key'), AES_ENCRYPT('value2', 'secret key'), AES_ENCRYPT('value3', 'secret key')) #TUPLE
sql = "Insert into dummy.test(email, phone, key1, key2, key3) values(%s,%s,%s,%s,%s)"
cursor.execute(sql,values)
是否有任何可能的方法来实现上述任何一种方式。? 这是好方法吗? 谢谢
因为 AES_ENCRYPT
是一个 MySQL 而 不是 一个 Python 函数并且为了避免 SQL 注入攻击,你需要这样做:
sql = """Insert into dummy.test(email, phone, key1, key2, key3)
values(%s, %s, AES_ENCRYPT(%s, 'secret key'), AES_ENCRYPT(%s, 'secret key'), AES_ENCRYPT(%s, 'secret key'))"""
cursor.execute(sql, (email_value, phone_value, key1_value, key2_value, key3_value))
其中 email_value
、phone_value
等是分别为表单字段 email
、phone
等发布的值