仅有一个基于口令的消息认证方案PBMAC1,如下表。
表5.1 基于口令的加密方案PBES1和PBES2对比
(hLen为HASH函数的输出长度)
项目 |
PBMAC1. |
使用的PBKDF |
PBKDF2 |
使用的密码算法 |
HMAC (底层HASH使用SHA1和SHA2) |
使用 |
推荐 |
7.1 PBMAC1
7.1.1 PBMAC1 generation
函数:C = PBMAC1-Generate (M, P, S, c dkLen)
功能:基于口令的加密方案PBES1的加密算法
输入参数:
- M:消息。
- P:口令,任意长度的字符串(通常为ASCII 或UTF-8字符)。
- S:盐值,8字节。无需保密,增加密文多变性。
- c:迭代次数,越大越好,建议不小于1000。
- dkLen:导出密钥的字节长度。
内部参数:
- MAC:HMAC-SHA1或HMAC-SHA2。
返回数据:
- T:消息检验码。
执行步骤:
步骤1:生成导出密钥,DK = PBKDF:2 (P, S, c, dkLen)。
步骤2:生成消息检验码T = MAC(DK, M)。
步骤3:输出消息检验码T。
7.1.2 PBMAC1 verification
函数:C = PBMAC1-Verify (M, P, S, c, dkLen, T)
功能:基于口令的加密方案PBES1的加密算法
输入参数:
- M:消息。
- P:口令,任意长度的字符串(通常为ASCII 或UTF-8字符)。
- S:盐值,8字节。无需保密,增加密文多变性。
- c:迭代次数,越大越好,建议不小于1000。
- dkLen:导出密钥的字节长度。
- T:消息检验码。
内部参数:
- MAC:HMAC-SHA1或HMAC-SHA2。
返回数据:
- ret:TRUE为验证通过,FALSE为验证失败。
执行步骤:
步骤1:生成导出密钥,DK = PBKDF2 (P, S, c, dkLen)。
步骤2:生成消息检验码T1= MAC(DK, M)。
步骤3:比较T1和T,两者相同则返回ret = TRUE,否则返回ret = FALSE。