mysql AES加密的使用

时间:2021-06-22 17:52:33   收藏:0   阅读:0

建表如下:

CREATE TABLE `aes_demo` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

使用如下sql插入一条数据:

INSERT INTO aes_demo (NAME, PASSWORD)
VALUES
    (
        tom,
        HEX(AES_ENCRYPT(666, 1))
    );

结果如下:

+----+------+----------------------------------+
| id | name | password                         |
+----+------+----------------------------------+
|  4 | tom  | 0A6187FF44BEB44F651AAD3BB4003360 |
+----+------+----------------------------------+

使用了AES加密函数,AES函数的两个参数分别是(待加密数据,密钥)。

注意:此处使用HEX函数转换是因为不转换直接插入会报错。

相应的解密查询如下:

SELECT
    AES_DECRYPT((UNHEX(PASSWORD)), 1) AS PASSWORD
FROM
    aes_demo;

结果如下:

+----------+
| PASSWORD |
+----------+
| 666      |
+----------+

备注:

AES是一种对称加密算法;

加密算法的特点是能够通过密钥正向加密和逆向解密;

而摘要算法只能正向的生成摘要,无法反向的还原回数据。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!