HarmonyOS 鸿蒙Next Crypto Architecture Kit(加解密算法框架服务)文档指南的非对称密钥加解密算法规格介绍中输入数据长度算法不一致

HarmonyOS 鸿蒙Next Crypto Architecture Kit(加解密算法框架服务)文档指南的非对称密钥加解密算法规格介绍中输入数据长度算法不一致 【问题描述】:Crypto Architecture Kit(加解密算法框架服务)文档指南的非对称密钥加解密算法规格介绍中输入数据长度算法不一致

RSA章节:数据长度必须小于RSA密钥字节长度 - 2 *md摘要字节长度 - 2

填充模式为PKCS1_OAEP章节:数据必须小于RSA密钥字节长度 - md摘要长度 - mgf1_md摘要长度 - 2

【问题现象】:填充模式为PKCS1_OAEP处给出的最大明文长度计算公式,与该文档上一小节对 PKCS1_OAEP 的描述(“输入数据长度必须小于RSA密钥字节长度 - 2 *md摘要字节长度 - 2”)产生直接冲突。根据 RFC3447 标准规范,OAEP 的填充开销由标签散列(md)和随机种子(长度等同于 md)决定,与掩码生成函数所使用的摘要算法(mgf1_md)本身的输出长度无关。如果开发者配置了不同的 md 和 mgf1_md(如 SHA256 和 SHA1),按照此处的错误公式计算最大明文长度,会导致加解密失败或截断报错。

cke_10301.png

【版本信息】:不涉及

【复现代码】:不涉及


更多关于HarmonyOS 鸿蒙Next Crypto Architecture Kit(加解密算法框架服务)文档指南的非对称密钥加解密算法规格介绍中输入数据长度算法不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。

更多关于HarmonyOS 鸿蒙Next Crypto Architecture Kit(加解密算法框架服务)文档指南的非对称密钥加解密算法规格介绍中输入数据长度算法不一致的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题+1,借楼跟一下

鸿蒙Next加解密框架中,非对称密钥加解密算法因密钥类型(如RSA、ECC等)及填充模式(如PKCS1、OAEP)不同,输入数据长度存在差异。RSA算法受密钥位数限制,明文长度需小于密钥长度减填充开销;ECC算法则需结合椭圆曲线参数。具体长度约束请严格参照《Crypto Architecture Kit开发指南》中对应算法页签的表格说明。

您指出的文档中RSA PKCS1_OAEP填充模式下最大明文长度计算公式的不一致问题确实存在,且与RFC3447标准存在偏差。

核心问题分析:

  1. 文档内部冲突:RSA章节的通用公式“数据长度 < 密钥字节长度 - 2 * md摘要字节长度 - 2”与PKCS1_OAEP子章节的公式“数据 < 密钥字节长度 - md摘要长度 - mgf1_md摘要长度 - 2”相互矛盾。
  2. 与RFC3447标准不符
    • 根据RFC3447第7.1节,OAEP填充的开销固定为 2 * hLen + 2 字节,其中 hLen 是哈希函数(md)的输出字节长度。
    • 掩码生成函数使用的哈希算法(mgf1_md)的输出长度不影响填充开销。mgf1_md 仅在生成掩码时使用,其输出可以按需截断或扩展,不直接消耗明文空间。
    • 因此,正确的最大明文长度计算公式应为:maxLen = k - 2 * hLen - 2,其中 k 为RSA密钥的字节长度,hLenmd 的输出字节长度。

文档错误的具体体现:

  • 通用公式(k - 2*hLen - 2)在 mdmgf1_md 不同时不准确。虽然它计算的结果与标准一致(因为它错误地将 mgf1_md 的影响等同于 md),但公式的表述本身混淆了 mdmgf1_md 的角色。
  • PKCS1_OAEP子章节的公式(k - hLen_md - hLen_mgf1 - 2)在 mdmgf1_md 不同时完全错误。它错误地将 mgf1_md 的输出长度作为固定开销,导致计算出的最大明文长度偏大。开发者若按此公式设置输入数据长度,在 mgf1_md 输出长度大于 md 输出长度时,必然导致加解密失败。

结论:

文档中PKCS1_OAEP子章节关于最大明文长度的描述公式有误,与RFC3447标准及RSA章节的通用描述存在逻辑冲突。正确规则应遵循RFC3447,即填充开销仅取决于 md 的摘要长度,与 mgf1_md 无关。开发者应参考RSA章节的通用公式(k - 2*hLen - 2)作为计算依据,忽略PKCS1_OAEP子章节中错误的公式。此文档问题需要华为官方勘误。

回到顶部