MySQL 中 AES_DECRYPT 加密,如何在瀚高資料庫中使用

瀚高PG實驗室發表於2022-05-13

瀚高資料庫

環境
系統平臺: 銀河麒麟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

 2

 我

 s

(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、解密:

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 行記錄)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2893917/,如需轉載,請註明出處,否則將追究法律責任。

相關文章