Mysql AES_DECRYPT()函数在Django原始查询中不起作用

时间:2017-02-16 23:21:42

标签: python mysql django encryption

当我在Django的原始查询中使用MySql函数AES_DECRYPT()时,此函数不起作用。我的代码是这样的:

sql = "select AES_DECRYPT(myfield, mykey) as ssn from mytable "
people_list = Peopletable.objects.raw(sql)
for p in people_list:
    print p.ssn

它打印出None,这意味着AES_DECRYPT()不起作用。但是,如果我在python端运行查询,那么我得到了我需要的东西。我尝试过像SUBSTR()这样的其他mysql函数,它们运行得很好。似乎只有这个AES_DECRYPT()在Django中不起作用。有人可以帮忙吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

实际上并不意味着它只是AES_DECRYPT(myfield,mykey)的结果为None(null)。

如果AES_DECRYPT()检测到无效数据或填充不正确,则返回NULL。但是,如果输入数据或密钥无效,则AES_DECRYPT()可能返回非NULL值(可能是垃圾)。

尝试直接在数据库上运行相同的查询,它可能会有相同的结果。