当我在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中不起作用。有人可以帮忙吗?非常感谢!
答案 0 :(得分:0)
实际上并不意味着它只是AES_DECRYPT(myfield,mykey)的结果为None(null)。
如果AES_DECRYPT()检测到无效数据或填充不正确,则返回NULL。但是,如果输入数据或密钥无效,则AES_DECRYPT()可能返回非NULL值(可能是垃圾)。
尝试直接在数据库上运行相同的查询,它可能会有相同的结果。