MySQL 8 AES_ENCRYPT()和AES_DECRYPT()。正确补充?

时间:2020-05-18 01:43:52

标签: mysql encryption

我想知道MySQL 8中AES_ENCRYPT和AES_DECRYPT的正确实现。

我有一个表,其中包含字段ownerId VARCHAR(16)和ownerPassword(BLOB)。

1。我们使用MySQL 01_tblCompany函数将记录插入表中 AES_ENCRYPT(),如下所示对ownerPassword字段进行加密:

INSERT INTO 01_tblCompany (ownerId, ownerPassword) VALUES ('owner001', AES_ENCRYPT('password123', 'privateKey'));

2。我们使用MySQL 01_tblCompany函数从表中选择该记录 AES_DECRYPT(),如下所示解密ownerPassword字段:

SELECT AES_DECRYPT(ownerPassword, 'privateKey') AS ownerPassword FROM 01_tblCompany WHERE ownerId = 'owner001';

MySQL page for the AES Encryption function 指出您不应该只将纯文本privateKey传递给key_str参数,而

将密钥传递给key_str参数的最安全方法是创建 一个真正随机的128位值,并将其作为二进制值传递。

我认为那是我的头发开始冒烟的时候,我希望有人能展示出正确实施的完整例子吗?

1 个答案:

答案 0 :(得分:0)

好的。这就是我们通过MySQL默认的app.post('/', cors(corsOptions), function (req, res, next) { res.json({ msg: 'This is CORS-enabled for a whitelisted domain POST request' }) }) AES_ENCRYPT()使用AES_DECRYPT()block_encryption_mode插入和选择字段的方式。

aes-128-ecb变量控制块加密模式

默认设置为block_encryption_mode。 ECB模式对数据库很有用,因为它不需要IV,因此存在1:1密文:纯文本关系。

请注意,我们从未真正使用 aes-128-ecb来解密存储在数据库中的密码。您应该对用户密码了解为零。

我们改为使用正确的密码对用户的输入尝试进行加密。

如果两个加密值都匹配,那么我们就成功登录了。

AES_DECRYPT()
相关问题