1# 对称密钥生成和转换规格 2 3<!--Kit: Crypto Architecture Kit--> 4<!--Subsystem: Security--> 5<!--Owner: @zxz--3--> 6<!--Designer: @lanming--> 7<!--Tester: @PAFT--> 8<!--Adviser: @zengyawen--> 9 10当前章节将说明系统目前支持的算法及其对应的规格。 11 12开发者可以通过字符串参数承载密钥规格,来生成对应的密钥。对于每种算法支持的字符串参数,将会在具体的每个算法规格中介绍。 13 14## AES 15 16AES(Advanced Encryption Standard),最常见的对称加密算法。 17 18基本特点: 19 20- 分组密码算法,分组长度为128位。 21 22- 密钥长度为128位、192位或256位。 23 24- 与3DES相比,安全性更高,处理速度更快。 25 26当前支持以字符串参数生成AES密钥,具体的“字符串参数”由“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 27 28| 对称密钥算法 | 密钥长度(bit) | 字符串参数 | API版本 | 29| -------- | -------- | -------- | -------- | 30| AES | 128 | AES128 | 9+ | 31| AES | 192 | AES192 | 9+ | 32| AES | 256 | AES256 | 9+ | 33 34## DES 35DES(Data Encryption Standard)算法。 36 37基本特点: 38 39DES是一种分组加密算法,它将明文分成64位的块,然后对每个块进行加密操作。 40 41当前支持以字符串参数生成DES密钥,具体的“字符串参数”由“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 42 43| 对称密钥算法 | 密钥长度(bit) | 字符串参数 | API版本 | 44| -------- | -------- | -------- | -------- | 45| DES | 64 | DES64 | 20+ | 46 47## 3DES 48 493DES(Triple Data Encryption Algorithm),也称为3DESede或TripleDES。 50 51基本特点: 52 53- 使用3个64位的密钥对数据库进行三次加密,相当于对每个数据块执行三次DES(Data Encryption Standard)加密算法。 54 55- 与DES相比,3DES的密钥长度更长,安全性更高,但处理速度不如DES。 56 57当前支持以字符串参数生成3DES密钥,具体的“字符串参数”由“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 58 59| 对称密钥算法 | 密钥长度(bit) | 字符串参数 | API版本 | 60| -------- | -------- | -------- | -------- | 61| 3DES | 192 | 3DES192 | 9+ | 62 63## SM4 64 65SM4,即SM4分组密码算法。 66 67基本特点: 68 69- 分组密码算法,分组长度为128位。 70 71- 密钥长度为128位。可通过扩展密钥增加密钥长度。 72 73- 加密算法与密钥扩展算法都采用32轮非线性迭代结构,数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 74 75当前支持以字符串参数生成SM4密钥,具体的“字符串参数”由“对称密钥算法”和“密钥长度”使用连接符“_”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 76 77| 对称密钥算法 | 密钥长度(bit) | 字符串参数 | API版本 | 78| -------- | -------- | -------- | -------- | 79| SM4 | 128 | SM4_128 | 10+ | 80 81## HMAC 82 83HMAC(Hash-based message authentication code),是一种基于哈希的消息认证码算法,运算时需要输入对称密钥。 84 85基本特点: 86 87HMAC使用的对称密钥可以是任何长度。 88 89- 如果密钥的长度大于HMAC分组长度,则将密钥进行单向散列的结果作为新的密钥。 90 91- 如果密钥的长度小于HMAC分组长度,则将末尾填充0作为新的密钥,即最终的密钥长度与HMAC分组长度保持一致。 92 93- 密钥长度推荐采用摘要算法的输出长度。 94 95当前支持以字符串参数生成HMAC使用的对称密钥: 96 97- 当HMAC使用的密钥长度与摘要算法的输出长度一致时,具体的“字符串参数”由“消息认证码算法”和“摘要算法”使用连接符“|”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 98 99- 当HMAC使用的密钥长度不在上述摘要算法输出长度的范围内,可以通过字符串参数“HMAC”创建对称密钥生成器,并根据HMAC使用的密钥的二进制数据生成密钥。 100 101| 消息认证码算法 | 摘要算法 | 密钥长度(bit) | 字符串参数 | API版本 | 102| -------- | -------- | -------- | -------- | -------- | 103| HMAC | SHA1 | 160 | HMAC\|SHA1 | 11+ | 104| HMAC | SHA224 | 224 | HMAC\|SHA224 | 11+ | 105| HMAC | SHA256 | 256 | HMAC\|SHA256 | 11+ | 106| HMAC | SHA384 | 384 | HMAC\|SHA384 | 11+ | 107| HMAC | SHA512 | 512 | HMAC\|SHA512 | 11+ | 108| HMAC | SM3 | 256 | HMAC\|SM3 | 11+ | 109| HMAC | - | [1, 32768] | HMAC | 11+ | 110