MySQL 中 AES_DECRYPT 加密,如何在瀚高数据库中使用

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 中 AES_DECRYPT 加密,如何在瀚高数据库中使用相关的知识,希望对你有一定的参考价值。

瀚高数据库
目录
环境
症状
问题原因
解决方案

环境
系统平台:银河麒麟R系(CPU龙芯)4,银河麒麟U系(CPU飞腾)4
版本:4.5.2,6.0
症状
mysql替换为国产瀚高数据库时, AES_DECRYPT 加密在瀚高数据库中使用报错

问题原因
MySQL数据库中利用AES_ENCRYPT()与AES_DECRYPT()加解密,瀚高数据库中有区别。

解决方案
瀚高数据库提供了加密模块pgcrypto,来对数据进行加密&解密

使用方法如下:

1、登录数据库,打开该功能,执行SQL:

create extension pgcrypto;

2、对表中某字段数据进行加密:

例如:有表s4,字段为name(varchar),对name字段加密。

该表有四条数据:

highgo=# table s4;

 name 

------

 1

 2s

(4 行记录)

3、加密:

encrypt(data bytea, key bytea, type text) returns bytea


data为要加密的数据,key为带有密钥key的data加密,type为指定的加密/解密数据的方法,type支持的值为 bf, aes, aes128, aes192, aes256

select encrypt(name::bytea,'aa','aes') from s4;

              encrypt               

------------------------------------

 \\x6172d60ea8e724965539fd4e69066f2b

 \\x3fee3e5d5b9c8e14769c8fa2f6ad5b11

 \\xac1a63f002731b6a017ce5ba82fb65e8

 \\xfc81af448c11cc4c5cb1ac59e52165e7

(4 行记录)

`

4、解密:

```cpp
decrypt(data bytea, key bytea, type text) returns bytea



select convert_from(decrypt('\\x6172d60ea8e724965539fd4e69066f2b','aa','aes'),'SQL_ASCII');

 convert_from 

--------------

 1

(1 行记录)
select convert_from(decrypt('\\x3fee3e5d5b9c8e14769c8fa2f6ad5b11','aa','aes'),'SQL_ASCII');

 convert_from 

--------------

 2

(1 行记录)

以上是关于MySQL 中 AES_DECRYPT 加密,如何在瀚高数据库中使用的主要内容,如果未能解决你的问题,请参考以下文章

不能 AES_DECRYPT (MySQL) 使用 openssl_encrypt (PHP) 加密的字符串

MySql AES_DECRYPT & AES_ENCRYPT 密钥在 PHP 中不起作用

AES_DECRYPT() 返回空字段

MySQL加密

MySQL密码加密与解密

Mysql 字段加密