我正在使用Pyramid1.3(Python2.7)开发一个项目,并在MySQL中存储数据。我有一个电子邮件地址表,我想加密它们以备存储。我试图在应用程序中加密它们,然后将它们解密以供查看。我不打算完全安全,但主要目的是在数据库本身受损的情况下,使数据变得足够模糊。在

我在AES中使用PyCrypto,并且一直在尝试跟踪这里的一些帖子和我发现的一些web教程。到目前为止,我发现的最接近的是this post,它似乎可以工作,至少可以加密它。我遵循这一点,并在数据库中存储类似"7hBAQrWhJRnL9YdBGJfRErGFwGi3aC6noGzYTrGwAoQ="的内容。但是解密函数会一直出错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 1: ordinal not in range(128)

我遇到了一些关于Python的unicode演示,这有助于我更好地理解它,但我仍然得到相同的错误。在

有关于如何编码、存储在数据库中、从数据库中取出和解码源数据字符串的简单教程吗?在

数据库需要一个特定的列排序吗?字段需要是某种类型吗?到目前为止,我一直在使用默认的排序规则并将其设置为VARCHAR,假设我存储的是字符串。听起来好像我在某个地方遇到了一些编码问题,类型不兼容之类的,但我的脑子在想我需要改变什么。在

有什么更好的建议或其他我能提供的吗?我可以显示我的代码,但它基本上是上面链接的副本。。。我只是想在修改太多之前先让它生效。在

编辑:

一些样本源。。。

在MySQL中,表是

id(内景)

客户机号(int)

emailaddress varchar(100)utf8mb4_general_ci(我一直在玩排序规则,我不知道它应该是什么!)在

Python:

^{pr2}$

clientemails是上表中的电子邮件列表。我在取消注释时得到错误:#if clientemails:

# decrypted = DecryptWithAES(cipher_for_decryption, clientemails[0].emailaddress)

我只是想破译第一个项目,只是想让它发挥作用,但这部分似乎让它适合现在。。。。在