我正在将 Django 用于捕获一些敏感数据的应用程序,并且我需要在数据库中对这些数据进行加密。我必须使用数据库加密。
因此,为了保存我的字段,我使用:
query = """
OPEN SYMMETRIC KEY MyKey
DECRYPTION BY CERTIFICATE MyCertificate
UPDATE mytable
SET name = ENCRYPTBYKEY(KEY_GUID('MyKey'), %s)
WHERE id = %s
CLOSE SYMMETRIC KEY MyKey
"""
args = ["Test Name", data.id]
cursor = connection.cursor()
cursor.execute(query, args)
transaction.commit_unless_managed()
该字段保存在数据库中,但是,当我解密保存在基础中的数据时,我得到0x540065007300740020004E0061006D006500
了我应该得到的地方0x54657374204E616D65
。
有人知道为什么在我的字符串中插入了一些 0x00 字节吗?
我尝试使用 connection.queries[-1] 获取查询字符串并直接在数据库中运行它,当我解密时数据是干净的。