Logo
加密算法

加密算法 #

AES 加密算法 #

类型:AES

可配置属性:

名称数据类型说明
aes-key-valueStringAES 使用的 KEY,无长度限制,可以由数字、字母、特殊字符组成
key-managerString密钥管理算法的名称

其他可选配置: 以下配置参数为算法内部实现使用,用户默认不需要关心,使用默认配置即可。

名称数据类型说明
aes-key-bit-lengthStringAES KEY 的字节长度,可选配置,默认为 128 bit。可配置为 128,192,256。Engine 内部会根据 digest-algorithm-name 属性指定的摘要算法将 aes-key-value 配置转换成对应长度的 secret key 给当前加密算法使用
digest-algorithm-nameStringAES KEY 的摘要算法,可选配置 默认值:SHA-512 可配置的项:“MD2”, “MD5”, “SHA-1”, “SHA-224”, “SHA-256”, “SHA-384”, “SHA-512”, “SHA-512/224”, “SHA-512/256”, “SHA3-224”, “SHA3-256”, “SHA3-384”, “SHA3-512”

说明:AES 算法的配置项(aes-key-value、aes-key-bit-length、digest-algorithm-name) 与 key-manager 二选一配置即可。

示例:

aes-key-value: test

当配置如上参数时,初始化加密算法的处理流程如下:

1.将用户配置的 aes-key-value 参数值使用 String.getBytes(StandardCharsets.UTF_8) 方法转换为字节数组。本示例中会将 test 转换成 1110100011001010111001101110100

2.使用默认的 SHA-512 摘要算法(可以通过 digest-algorithm-name 参数选择配置),对步骤1中的结果进行摘要处理。本示例中处理结果为 1001111110000110110100001000000110001000010011000111110101100101100110100010111111101010101000001100010101011010110100000001010110100011101111110100111100011011001010110000101110000010001011001101000101011101011011000001010110110000111100000000101000001000

3.由于 AES 算法使用的密钥有长度要求,因此会对步骤2中的结果进行截取操作,以生成符合 AES 算法密钥长度的最终密钥。默认情况下,处理结果的长度为 128 位(bit),可以通过 aes-key-bit-length 参数选择配置。本示例中处理结果为 10011111100001101101000010000001100010000100110001111101011001011001101000101111111010101010000011000101010110101101000000010101

DES 加密算法 #

类型:SphereEx:DES

可配置属性:

名称数据类型说明
des-key-valueStringDES 使用的 KEY,无长度限制,可以由数字、字母、特殊字符组成。Engine 内部会通过 digest-algorithm-name 算法将该值转换成 64 位的 secret key 给当前加密算法使用
key-managerString密钥管理算法的名称

其他可选配置: 以下配置参数为算法内部实现使用,用户默认不需要关心,使用默认配置即可。

名称数据类型说明
digest-algorithm-nameStringDES KEY 的摘要算法,可选配置 默认值:SHA-512 可配置的项:“MD2”, “MD5”, “SHA-1”, “SHA-224”, “SHA-256”, “SHA-384”, “SHA-512”, “SHA-512/224”, “SHA-512/256”, “SHA3-224”, “SHA3-256”, “SHA3-384”, “SHA3-512”

说明:DES 的配置项 (des-key-value、digest-algorithm-name) 与 key-manager 二选一配置即可。

示例:

des-key-value: test

当配置如上参数时,初始化加密算法的处理流程如下:

1.将用户配置的 des-key-value 参数值使用 String.getBytes(StandardCharsets.UTF_8) 方法转换为字节数组。本示例中会将 test 转换成 1110100011001010111001101110100

2.使用默认的 SHA-512 摘要算法(可以通过 digest-algorithm-name 参数选择配置),对步骤1中的结果进行摘要处理。本示例中处理结果为 1001111110000110110100001000000110001000010011000111110101100101100110100010111111101010101000001100010101011010110100000001010110100011101111110100111100011011001010110000101110000010001011001101000101011101011011000001010110110000111100000000101000001000

3.由于 DES 算法使用的密钥有长度要求,因此会对步骤2中的结果进行截取操作,以生成符合 DES 算法 64 位(bit)密钥长度要求的最终密钥。默认情况下 。本示例中处理结果为 1001111110000110110100001000000110001000010011000111110101100101

DESEDE(3DES) 加密算法 #

类型:SphereEx:DESEDE

可配置属性:

名称数据类型说明
desede-key-valueStringDESEDE 使用的 KEY,无长度限制,可以由数字、字母、特殊字符组成
key-managerString密钥管理算法的名称

其他可选配置: 以下配置参数为算法内部实现使用,用户默认不需要关心,使用默认配置即可。

名称数据类型说明
desede-key-bit-lengthStringDESEDE KEY 的字节长度,可选配置,默认为 192 bit。可配置为 168,192。Engine 内部会根据 digest-algorithm-name 属性指定的摘要算法将 desede-key-value 配置转换成对应长度的 secret key 给当前加密算法使用
digest-algorithm-nameStringDESEDE KEY 的摘要算法,可选配置 默认值:SHA-512 可配置的项:“MD2”, “MD5”, “SHA-1”, “SHA-224”, “SHA-256”, “SHA-384”, “SHA-512”, “SHA-512/224”, “SHA-512/256”, “SHA3-224”, “SHA3-256”, “SHA3-384”, “SHA3-512”

说明:DESEDE 的配置项 (desede-key-value、desede-key-bit-length、digest-algorithm-name) 与 key-manager 二选一配置即可。

示例:

desede-key-value: test

当配置如上参数时,初始化加密算法的处理流程如下:

1.将用户配置的 desede-key-value 参数值使用 String.getBytes(StandardCharsets.UTF_8) 方法转换为字节数组。本示例中会将 test 转换成 1110100011001010111001101110100

2.使用默认的 SHA-512 摘要算法(可以通过 digest-algorithm-name 参数选择配置),对步骤1中的结果进行摘要处理。本示例中处理结果为 1001111110000110110100001000000110001000010011000111110101100101100110100010111111101010101000001100010101011010110100000001010110100011101111110100111100011011001010110000101110000010001011001101000101011101011011000001010110110000111100000000101000001000

3.由于 DESEDE 算法使用的密钥有长度要求,因此会对步骤2中的结果进行截取操作,以生成符合 AES 算法密钥长度的最终密钥。默认情况下,处理结果的长度为 192 位(bit),可以通过 desede-key-bit-length 参数选择配置。本示例中处理结果为 100111111000011011010000100000011000100001001100011111010110010110011010001011111110101010100000110001010101101011010000000101011010001110111111010011110001101100101011000010111000001000101100

AES 算法支持兼容数据库 AES 函数的行为。目前支持兼容 MariaDB 的 AES_ENCRYPTAES_DECRYPT 加解密函数的行为。 数据库兼容模式下,可配置属性如下:

名称数据类型说明
db-compatible-modeString兼容数据库的类型,比如配置为 MariaDB
aes-key-valueStringAES 使用的 KEY
aes-modeString可选配置,默认值 ECB,当用户在 MariaDB 里指定了 mode 时,需要保持一致。可选:“ECB”, “CBC”, “CTR”
aes-ivString可选配置,默认为空,当用户在 MariaDB 里指定了 iv 时,需要保持一致。在 MariaDB 中, iv 字符串长度必须大于等于16
aes-encoderString可选配置,对明文加密后密文编码的方式,默认为 BASE64,可选值 BASE64 和 HEX
key-managerString密钥管理算法的名称

兼容 MariaDB 的配置示例如下:

示例1:

# 必须先指定算法兼容 MariaDB
db-compatible-mode: MariaDB
aes-key-value: test_key

那么上述配置和 MariaDB 里如下使用方式等价:

-- AES_ENCRYPT 加密, 并默认对结果进行 TO_BASE64 处理
SELECT TO_BASE64(AES_ENCRYPT('encrypt me', 'test_key'));
+--------------------------------------------------+
| TO_BASE64(AES_ENCRYPT('encrypt me', 'test_key')) |
+--------------------------------------------------+
| 9BZPKT7PCRCiUz/Vpm86iA==                         |
+--------------------------------------------------+
1 row in set (0.001 sec)

-- 先通过 FROM_BASE64 解码,然后通过 AES_DECRYPT 解密,返回原始明文 encrypt me
SELECT AES_DECRYPT(FROM_BASE64('9BZPKT7PCRCiUz/Vpm86iA=='), 'test_key');
+------------------------------------------------------------------+
| AES_DECRYPT(FROM_BASE64('9BZPKT7PCRCiUz/Vpm86iA=='), 'test_key') |
+------------------------------------------------------------------+
| encrypt me                                                       |
+------------------------------------------------------------------+
1 row in set (0.000 sec)

-- 通过 SQL 查询 MariaDB 的默认模式为 ecb 模式
MariaDB [(none)]> SHOW VARIABLES LIKE 'block_encryption_mode';
+-----------------------+-------------+
| Variable_name         | Value       |
+-----------------------+-------------+
| block_encryption_mode | aes-128-ecb |
+-----------------------+-------------+
1 row in set (0.001 sec)

示例2:

# 必须先指定算法兼容 MariaDB
db-compatible-mode: MariaDB
aes-key-value: test_key
# 通过 hex 对加密后密文结果进行编码处理
aes-encoder: HEX
# 可选配置,声明模式为 cbc 模式
aes-mode: CBC
# 可选配置,cbc 模式需要配置 iv
aes-iv: 1234567890123456

那么上述配置和 MariaDB 里如下使用方式等价:

-- 通过 SQL 修改 MariaDB 的默认模式为 CBC 模式,和上述算法配置保持一致
MariaDB [(none)]> set block_encryption_mode='aes-128-cbc';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW VARIABLES LIKE 'block_encryption_mode';
+-----------------------+-------------+
| Variable_name         | Value       |
+-----------------------+-------------+
| block_encryption_mode | aes-128-cbc |
+-----------------------+-------------+
1 row in set (0.001 sec)


-- AES_ENCRYPT 加密, 并默认对结果进行 HEX 处理。由于目前处于 cbc 模式,加密参数传入上述配置的 aes-iv: 1234567890123456
MariaDB [(none)]> SELECT HEX(AES_ENCRYPT('encrypt me', 'test_key', '1234567890123456'));
+----------------------------------------------------------------+
| HEX(AES_ENCRYPT('encrypt me', 'test_key', '1234567890123456')) |
+----------------------------------------------------------------+
| A8859EB13BAAF804385F8751F56082B8                               |
+----------------------------------------------------------------+
1 row in set (0.000 sec)


-- 先通过 unhex 解码,然后通过 AES_DECRYPT 解密,返回原始明文 encrypt me。由于目前处于 cbc 模式,加密参数传入上述配置的 aes-iv: 1234567890123456
MariaDB [(none)]> SELECT AES_DECRYPT(unhex('A8859EB13BAAF804385F8751F56082B8'), 'test_key', '1234567890123456');
+----------------------------------------------------------------------------------------+
| AES_DECRYPT(unhex('A8859EB13BAAF804385F8751F56082B8'), 'test_key', '1234567890123456') |
+----------------------------------------------------------------------------------------+
| encrypt me                                                                             |
+----------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

RC4 加密算法 #

类型:RC4

可配置属性:

名称数据类型说明
rc4-key-valueStringRC4 使用的 KEY。通过 String.getBytes(StandardCharsets.UTF_8) 计算后的字节数组长度大于等于5并且小于256
key-managerString密钥管理算法的名称

说明:rc4-key-value 与 key-manager 二选一配置即可。

示例:

rc4-key-value: test-sharding

当配置如上参数时,初始化加密算法的处理流程如下:

将用户配置的 rc4-key-value 参数值使用 String.getBytes(StandardCharsets.UTF_8) 方法转换为字节数组,作为 RC4 算法的密钥使用。

本示例中会将 test-sharding 转换成字节数组 [116, 101, 115, 116, 45, 115, 104, 97, 114, 100, 105, 110, 103],字节数组长度为 13,在算法允许的长度范围内。

SM2 加密算法 #

类型:SphereEx:SM2

可配置属性:

名称数据类型说明
sm2-public-key-valueStringSM2 算法使用的公钥,BASE64 格式
sm2-private-key-valueStringSM2 算法使用的私钥,BASE64 格式,私钥会加密存储
key-managerString密钥管理算法的名称

说明:SphereEx:SM2 的配置(sm2-public-key-value、sm2-private-key-value) 与 key-manager 二选一配置即可。

示例:

sm2-public-key-value: MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE0oppHTfuiESO0DR+9c5g7iRlrbDHgPVeRQzNsskL4ZSHkYvyms76Zv4He95WySnTuZMo0OaQchhRbmXIkXRuyA==
sm2-private-key-value: MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQg7ltTxwCxo5gUftPXTLCfDCKCvl7284CRkc/bk4YyzJagCgYIKoEcz1UBgi2hRANCAATSimkdN+6IRI7QNH71zmDuJGWtsMeA9V5FDM2yyQvhlIeRi/Kazvpm/gd73lbJKdO5kyjQ5pByGFFuZciRdG7I

当配置如上参数时,初始化加密算法的处理流程如下:

将用户配置的 sm2-public-key-valuesm2-private-key-value 参数值分别进行 BASE64 解码操作,得到对应的二进制公钥和私钥如下:

公钥:110000010110010011000000010011000001100000011100101010100001100100100011001110001111010000001000000001000001100000100000101010100000010001110011001111010101010000000110000010001011010000001101000010000000000000010011010010100010100110100100011101001101111110111010001000010001001000111011010000001101000111111011110101110011100110000011101110001001000110010110101101101100001100011110000000111101010101111001000101000011001100110110110010110010010000101111100001100101001000011110010001100010111111001010011010110011101111101001100110111111100000011101111011110111100101011011001001001010011101001110111001100100110010100011010000111001101001000001110010000110000101000101101110011001011100100010010001011101000110111011001000

私钥:1100001000000110010011000000100000000100000000001100000001001100000110000001110010101010000110010010001100111000111101000000100000000100000110000010000010101010000001000111001100111101010101000000011000001000101101000001000111100100110000011101110000001000000001000000010000010000100000111011100101101101010011110001110000000010110001101000111001100000010100011111101101001111010111010011001011000010011111000011000010001010000010101111100101111011110110111100111000000010010001100100011100111111011011100100111000011000110010110011001001011010100000000010100000011000001000001010101000000100011100110011110101010100000001100000100010110110100001010001000000001101000010000000000000010011010010100010100110100100........

SM4 加密算法 #

类型:SM4

可配置属性:

名称数据类型说明
sm4-keyStringSM4 使用的 KEY (16 Bytes)
sm4-modeStringSM4 使用的 MODE,可选配置为 “ECB”, “CBC”, “OFB”, “CFB”, “GCM”, “CCM”
sm4-ivStringSM4 使用的 IV (MODE 为 CBC,OFB,CFB,GCM,CCM 时需指定。当 MODE 为 CCM 时长度为 8 Bytes,其他 MODE 长度为 16 Bytes)
sm4-paddingStringSM4 使用的 PADDING (PKCS5Padding,PKCS7Padding,NoPadding)
key-managerString密钥管理算法的名称

说明:SM4 的配置(sm4-key、sm4-mode、sm4-iv、sm4-padding)与 key-manager 二选一配置即可。

示例:

# 1.ECB 模式配置示例如下:
sm4-key: 4D744E003D713D054E7E407C350E447E
sm4-mode: ECB
sm4-padding: PKCS5Padding

# 2.CBC 模式配置示例如下:
sm4-key: f201326119911788cFd30575b81059ac
sm4-iv: e166c3391294E69cc4c620f594fe00d7
sm4-mode: CBC
sm4-padding: PKCS7Padding

# 3.OFB 模式配置示例如下:
sm4-key: f201326119911788cFd30575b81059ac
sm4-iv: e166c3391294E69cc4c620f594fe00d7
sm4-mode: OFB
sm4-padding: PKCS7Padding

# 4.CFB 模式配置示例如下:
sm4-key: f201326119911788cFd30575b81059ac
sm4-iv: e166c3391294E69cc4c620f594fe00d7
sm4-mode: CFB
sm4-padding: PKCS7Padding

# 5.GCM 模式配置示例如下:
sm4-key: f201326119911788cFd30575b81059ac
sm4-iv: e166c3391294E69cc4c620f594fe00d7
sm4-mode: GCM
sm4-padding: NoPadding

# 6.CCM 模式配置示例如下:
sm4-key: f201326119911788cFd30575b81059ac
sm4-iv: 3132333435363738
sm4-mode: CCM
sm4-padding: NoPadding

假设用户使用上面的 ECB配置示例时,初始化加密算法的处理流程如下:

1.将用户配置的 sm4-key 参数值使用 Hex.decodeHex(key) 方法将用户输入的16进制字符串转换为字节数组。本示例中会将 4D744E003D713D054E7E407C350E447E 转换成 1001101011101000100111000000000001111010111000100111101000001010100111001111110010000000111110000110101000011100100010001111110;当然,sm4-iv参数会做类似处理。

RSA2048 加密算法 #

类型:SphereEx:RSA

可配置属性:

名称数据类型说明
rsa-public-key-valueStringRSA 算法使用的公钥,BASE64 格式
rsa-private-key-valueStringRSA 算法使用的私钥,BASE64 格式,私钥会加密存储
key-managerString密钥管理算法的名称

说明:RSA2048 的配置(rsa-public-key-value、rsa-private-key-value)与 key-manager 二选一配置即可。

示例:

rsa-public-key-value: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnkOZVTuURVurYRbFIjtWwSEcCyJ3vwlvlwUEAFsbp0Ub0toFAlkPZ+lSI1xyOw0u0bs/kxItk6kRkOUJcPf9nXCrLHEpxoeN9QBhU86k5c/M2g2C5iIyiJXTYz0R0ddYJWIuz7jXimnQP7uHoLR8PUAT9DMhcG3lK5cT4LDiiqAvuxhVJzlNIDPFJ5U0/XdpJ5oKzJYVal/10pYT0Nt5prx3tFl0uwTgw+NhRWx7IssNfwiqKaD8Cq9/lwb0gtXNxmL8KDCG/8TNj+bfJQD+9y0lQXIenUx+JYCXc32NA9Pb7Js8SHyAvmpkreu4XYzMk4so+OCb1SIxBhbIM1tvuQIDAQAB
rsa-private-key-value: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCeQ5lVO5RFW6thFsUiO1bBIRwLIne/CW+XBQQAWxunRRvS2gUCWQ9n6VIjXHI7DS7Ruz+TEi2TqRGQ5Qlw9/2dcKsscSnGh431AGFTzqTlz8zaDYLmIjKIldNjPRHR11glYi7PuNeKadA/u4egtHw9QBP0MyFwbeUrlxPgsOKKoC+7GFUnOU0gM8UnlTT9d2knmgrMlhVqX/XSlhPQ23mmvHe0WXS7BODD42FFbHsiyw1/CKopoPwKr3+XBvSC1c3GYvwoMIb/xM2P5t8lAP73LSVBch6dTH4lgJdzfY0D09vsmzxIfIC+amSt67hdjMyTiyj44JvVIjEGFsgzW2+5AgMBAAECggEAQgmO54OuwKoZfq+Tnk8IShnYq8S8FpiHWYqcOtHJXih2DasvP+WNihxPS7X9bCp6CMWLJ4EER4Lac40+PUcdKh6jLi4h8lcJott/wQqOv93PaoUMw54tW9S4mcYXs2mZvC+VvNMyDO1OGenUE/h7hstACDt1joYsg93MS4tDW/gHC9eP7hDANZrHs7db26iiP6D8b7GjB+XL6QFgN1q+o6qXmqzvpePGRj4GYuootpDkuxZoDv3GH1gzHoOQnuPMfOm7cE5ov6DrC7OFNgNKDqn5pvo215RL8yBfJ4a6E32AuOzbjtgASX8x7RQQAIHCuEMU75JO+BDw39QqSszsKQKBgQDSnM+/pGztII/IUyFdtSGoJxu2wDoBEMUshJFLSddtvjBH8tqmTGVIl20TbpB4C4sItj2wpMKEzbjs4+wmw+a7h/tR0NHlGEY7pXgNY9QPOjY8kQJeCsVPMUZqqprT2329xm9OUXdgSgaMgvhfaMvRwU+/ufs6UwtyMIwsKFU2rwKBgQDAXswiWVufUQn/RyiY2bb2+lwG8MLhgKv+ntV/CF0+O2d6Pi+HsFPzrEgNYsWCrnYA9wv9McJQi78mBkQYmKQvWfaTMwLOCLsdK/7icPFSWlACRlDOBHc8XXdliQD29dNaqG6BDkwAZ9AgBjKHEMjQMExmgYnR+VFlWX3bp6ZaFwKBgBtZ8ATkVp0I8INEgH3J6yAKTCgUmLPQuLqKUNAlO8vtuhlt6YVVQIYH3Et8vVhJr3mnKSXKj9RtXwmso9t473sFMtcyNj/5Qg229HtQrpZ3qdl9v3/1CCC7tnhdxZOj2pWNsqDKJaWkl2siCx1g369S2od8oKq3ZDIlKd8GMeLTAoGBAJ/+eBNddImV0hXCLi6qbLUPVvjix4LcDLCxk+maoEqBB7gw/kEBU2GH+UlAy/q7dSOqVQtZlj59bBaJAZvfYDaNwTl+JKgNtOo3TD8zJlKTEJZDuzMNncnUBtio0OeVXxq4mWe251ky/nOUE/Qn7ozQjsp2lJTRonQDsVy+G+ozAoGBAISp1Hb/cWfZWpi2P6+UlN4PJhitpNam6se2PDbQheUn782OdWt9uV8HmeRscXPvobb1nD2pY8mKs32GNAzqikoVzfNcH2nxwopcz+z6WsrUzeLtdEFk9ABkDAAtQnlPpfnjLZVt5rc0Is7VZ9kDmiXiUOUN7eiQeaXnGykH7B5/

当配置如上参数时,初始化加密算法的处理流程如下:

将用户配置的 rsa-public-key-valuersa-private-key-value 参数值分别进行 BASE64 解码操作,得到对应的二进制公钥和私钥如下:

公钥:001100001000001000000001001000100011000000001101000001100000100100101010100001100100......,公钥过长,此处仅部分展示;

私钥:00110000100000100000010010111110000000100000000100000000001100000000110100000110000010010010101010000110010010001000011......,私钥过长,此处仅部分展示。

FPE 加密算法 #

类型:SphereEx:FPE

可配置属性:

名称数据类型说明
fpe-key-valueStringFPE 算法使用的 KEY (fpe-cipher 配置为 AES 时,KEY 可配置 16、24 或 32 Bytes,fpe-cipher 配置为 SM4 时,KEY 可配置 16 Bytes)
fpe-alphabetStringFPE 算法使用的字典表,规定了输出密文的范围
fpe-cipherStringFPE 算法内部使用的算法类型,可选类型:AES、SM4,默认值为 AES

说明:FPE 的配置(fpe-key-value、fpe-alphabet、fpe-cipher)与 key-manager 二选一配置即可。

示例:

fpe-key-value: 1234567890abcdef
fpe-alphabet: 0123456789
fpe-cipher: AES

当配置如上参数时,初始化加密算法的处理流程如下:

将用户配置的 fpe-key-value 参数值使用 String.getBytes(StandardCharsets.UTF_8) 方法转换为字节数组。本示例中会将 1234567890abcdef 转换成 110001001100100011001100110100001101010011011000110111001110000011100100110000011000010110001001100011011001000110010101100110

模糊加密算法 #

字符摘要算法 #

说明:底层存储节点的字符集需要设置为 utf8 或 utf8mb4,collate 设置为 utf8_bin 或 utf8mb4_bin

类型:SphereEx:CHAR_TRANSFORM_LIKE

可配置属性:

名称数据类型说明
key-managerString密钥管理算法的名称

脱敏字符摘要算法 #

说明:底层存储节点的字符集需要设置为 utf8 或 utf8mb4

原理:1.先使用配置的脱敏算法对明文数据进行脱敏;2.对步骤1中脱敏后的数据,使用配置的摘要算法进行摘要

类型:SphereEx:COMPLEX_MASK_LIKE

可配置属性:

名称数据类型说明
like-algorithm-nameStringlike 加密算法名称,可选配置,默认为 SphereEx:CHAR_TRANSFORM_LIKE
mask-algorithm-nameString脱敏算法名称,可选配置,默认为 KEEP_FIRST_N_LAST_M

说明:其他配置属性,参考具体使用的 like 加密算法和脱敏算法的配置属性。

示例:

first-n: 3
last-m: 4
replace-char: *

当配置如上参数时,初始化加密算法的处理流程如下:

根据用户配置的 like-algorithm-name 初始化 like 加密算法,此处默认使用 SphereEx:CHAR_TRANSFORM_LIKE 算法。

根据用户配置的 mask-algorithm-name 初始化脱敏算法,此处默认使用 KEEP_FIRST_N_LAST_M 脱敏算法。

其余属性分别为对应的 like 加密算法和脱敏算法中的属性。

排序加密算法 #

OPE 加密算法 #

类型:SphereEx:FASTOPE

说明:该算法也可以直接当成标准算法使用,无需配置 orderQuery 列,也可以实现排序、比较、范围查询。

可配置属性:

名称数据类型说明
alpha-keyStringOPE 算法使用的随机 double,可以使用 java.security.SecureRandom#nextDouble 生成,取值范围 0.8-1
factor-e-keyStringOPE 算法使用的随机 double,可以使用 java.security.SecureRandom#nextDouble 生成,取值范围 0-1
factor-k-keyStringOPE 算法使用的随机 long,可以使用 java.security.SecureRandom#nextLong 生成
charset-nameString可选参数,OPE 算法处理字符串类型时使用的字符集,默认为 UTF_8,可以根据数据库的字符集进行设置,例如:DM 数据库默认采用 GB18030 字符集,OPE 算法需要配置成 charset-name: 'GB18030'

示例:

alpha-key: '0.8935217796678353'
factor-e-key: '0.9186430364852792'
factor-k-key: '523211953918290'

当配置如上参数时,初始化加密算法的处理流程如下:

alpha-keyfactor-e-key 参数值转换为 double 类型,将 factor-k-key 转换为 long 类型,后续使用。

查询辅助算法 #

MD5 加密算法 #

类型:MD5

可配置属性:

名称数据类型说明
saltString盐值(可选)。无长度限制,可以由数字、字母、特殊字符组成。

示例:

salt: 202cb962ac5907

当配置如上参数时,初始化加密算法的处理流程如下:

根据用户配置的 salt(可选)初始化 MD5 算法,后续加密时会拼接明文和 salt,进行摘要操作。

SHA256 加密算法 #

类型:SphereEx:SHA

可配置属性:

名称数据类型说明
key-managerString密钥管理算法的名称

示例:

SHA256 算法没有额外的属性配置,初始化加密算法的处理流程如下:

初始化 SHA256 算法,后续加密时会使用 SHA256 算法,对明文进行摘要操作。

SM3 加密算法 #

类型:SM3

可配置属性:

名称数据类型说明
sm3-saltStringSM3 使用的 SALT(空 或 8 Bytes)
key-managerString密钥管理算法的名称

说明:sm3-salt 与 key-manager 二选一配置即可。

示例:

sm3-salt: test1234

当配置如上参数时,初始化加密算法的处理流程如下:

根据用户配置的 sm3-salt(可选)初始化 SM3 算法,后续加密时会拼接明文和 salt,进行摘要操作。

密钥管理 #

内置加密算法(AES、RC4、SM3、SM4)可以使用密钥管理功能统一管理密钥配置,支持本地密钥管理和云端密钥管理功能。

本地密钥管理 #

类型:LOCAL

可配置属性:

名称数据类型说明
aes-key-valueStringSphereEx:AES 使用的 KEY
rc4-key-valueStringSphereEx:RC4 使用的 KEY
sm3-saltStringSM3 使用的 SALT(空 或 8 Bytes)
sm4-keyStringSM4 使用的 KEY (16 Bytes)
sm4-modeStringSM4 使用的 MODE (CBC 或 ECB)
sm4-ivStringSM4 使用的 IV (MODE为CBC时需指定,16 Bytes)
sm4-paddingStringSM4 使用的 PADDING (PKCS5Padding 或 PKCS7Padding,暂不支持NoPadding)

AWS 云端密钥管理 #

类型:SphereEx:AWS_KMS

可配置属性:

名称数据类型说明
access-keyStringaws access key 配置
secret-keyStringaws secret key 配置
aws-regionStringaws region 配置
secret-nameStringaws secret name 配置