基于SM4算法实现数据加密解密功能
羲和数据库基于此实现数据加密解密功能,为数据提供一定安全保障,使用encrypt()函数加密数据,主要包含三个参数分别为待加密数据、密钥和使用SM4算法加密;使用decrypt()解密函数进行解密,主要包含三个参数分别为加密后的数据、密钥和使用SM4算法解密。支持使用多种字符类型生成密钥,以及对多种字符类型数据进行加密,如下进行简要概述。
select encrypt('xiaoming','hzyijinghalo','sm4');select convert_from(decrypt('\x094831464f62a4a0cf72071dcd0598a5','hzyijinghalo','sm4'),'SQL_ASCII');
select encrypt('xiaoming','59076289561','sm4');select convert_from(decrypt('\xfcc3aea4e19c823e7173831a17acefa2','59076289561','sm4'),'SQL_ASCII');
select encrypt('xiaoming','%$#@)(*&^%!','sm4');select convert_from(decrypt('\x838becde3f6e60afc47fa75ec942fd83','%$#@)(*&^%!','sm4'),'SQL_ASCII');
select encrypt('xiaoming','haloSM4杭12%$','sm4');select convert_from(decrypt('\x88d90971915cc10a5cc4078e7f1d27be','haloSM4杭12%$','sm4'),'SQL_ASCII');
2.支持对多种字符类型数据进行加密,相对于同一密钥,不同数据生成不同的加密数据。
select encrypt('12345','haloSM4杭12%$','sm4');select convert_from(decrypt('\x6c635bd0d7a0a02de3a9991f7d30590c','haloSM4杭12%$','sm4'),'SQL_ASCII');
select encrypt('杭州易景','haloSM4杭12%$','sm4');select convert_from(decrypt('\x1e61fa9f5be9ab8832f5141873124467','haloSM4杭12%$','sm4'),'SQL_ASCII');
select encrypt('羲和SM4','haloSM4杭12%$','sm4');select convert_from(decrypt('\x81660031932353b0f91ee0b2b0deff73','haloSM4杭12%$','sm4'),'SQL_ASCII');
3.解密支持pad:pkcs和pad:none参数,若decrypt返回结果位数过短,可使用pad:none对其补零,默认使用pad:pkcs。
select encrypt('12345','12%$ha','sm4');select decrypt('\x70ee654189f584e623d48b52cad27e13','12%$ha','sm4/pad:pkcs');select decrypt('\x70ee654189f584e623d48b52cad27e13','12%$ha','sm4/pad:none');
select encrypt('12345','haloSM4杭12%$','sm4');select convert_from(decrypt('\x6c635bd0d7a0a02de3a9991f7d30590c','12345678','sm4'),'SQL_ASCII');