我在PostgreSQL数据库中有client_info表,其中要存储加密值的字段(地址)为1。但是,当我要将字段作为API结果发送时,我想对其解密并发送解密的地址。
下面是我的加密和解密函数(我也分别在进行base64编码/解码以及加密/解密)
PADDING = lambda s: s + (32 - len(s) % 32) * ' '
def encrypt_info(str):
try:
encrypted_info = b64encode(obj.encrypt(settings.PADDING(str)))
return encrypted_info
except Exception as e:
print("Error in encryption: %s", e.message)
return str
def decrypt_info(str):
try:
decrypted_info = obj.decrypt(b64decode(str)).rstrip()
return decrypted_info
except Exception as e:
print("Error in decryption: %s", e.message)
return str
其中obj是使用密钥的AES对象。 (出于安全原因,无法共享它。)
到目前为止,加密工作正常,每当插入新行时,地址字段都会被加密并存储在数据库中。
我面临的问题是:
我希望该功能在所有情况下都能正常工作。你能帮我吗? 我找到了一些函数来检查字符串是否为base64编码,然后执行该操作,但这在所有情况下均不起作用。
任何帮助将不胜感激。
答案 0 :(得分:0)
没有可靠的方法来判断字符串是“原始”还是AES加密的结果。
如果要保持向后兼容性,则需要将一些标志和消息一起写入数据库,以区分新/旧数据。