SM2中使用了一种KDF,可以参见SM2标准文档第4部分公钥加密算法的5.4.3节密钥派生函数。
函数:K = KDF (Z, klen)
功能:SM2使用的的密钥导出函数
输入参数:
- Z:KDF所需的数据。
- klen:导出密钥的比特长度。
内部参数:
- HASH:伪随机函数,这里选中SM3。
- hlen:HASH函数的输出长度,即SM3输出长度256比特。
- int(i):计数器i的32比特大端表示。
返回数据:
- K:导出密钥。
执行步骤:
步骤1: 。
步骤2:若n>2exp(32)-1,返回错误标识。
步骤3:for i = 1,2,..., n
K(i) = HASH (Z || int(i))
扫描二维码关注公众号,回复:
4254909 查看本文章
步骤4:返回K = MSB(K(1) || K(2) || ... || K(n), klen)。(取串的最左边kLen比特)。
图1 SM2使用的KDF的执行流程图