我有一个可以从python访问的MYSQL表,这个表必须保存用户名,密码和电子邮件加密。
我使用aes crypto加密名称和电子邮件。和argon2作为密码。
我的桌子位于云服务器上,是使用直接MYSQL命令创建的:
CREATE TABLE members(member SMALLINT UNIQUE PRIMARY KEY NOT NULL AUTO_INCREMENT, name BINARY(35) NOT NULL, pseudonym VARCHAR(20) NOT NULL, password BINARY(16) NOT NULL, gender CHAR(1) NOT NULL, birthday DATE NOT NULL, email BINARY(40) NOT NULL);
我遇到加密块大小的问题,其中一些是1字节,另一些是3字节,或者是我理解的。
这是我的python查询:
member_id = i_member
name = aes_encrypt('Name First second')
pseudonym = 'lala'
gender = 'm'
birthday = '2017-12-12'
email = aes_encrypt('email@email.com')
password = ph.hash("password")
self.cur.execute("INSERT IGNORE INTO members VALUES(%s,%s,%s,%s,%s,%s,%s)", (member_id, name, pseudonym, password, gender, birthday, email))
self.con.commit()
输出错误是:
[22:34:21] SQLCloudDb.py:155: Warning: (1300, "Invalid utf8 character string: 'C8CCA6'")
member_id, name, pseudonym, password, gender, birthday, height, weight, email, ))
... Similar to password and email
如果我去我的云SQL,我可以看到插入的成员,但看起来他们已被修剪,列看起来很奇怪,也许是因为这些字节中的一些是CLRL?以下图片包含的列数多于我发布的代码。
感谢每一位帮助谢谢:)