PBEWithSHA1AndTripleDES 与 PBEWithSHA1And3KeyTripleDES

PBEWithSHA1AndTripleDES vs PBEWithSHA1And3KeyTripleDES

PBEWithSHA1AndTripleDES 和 PBEWithSHA1And3KeyTripleDES 有什么区别,3key 是什么意思?

IBM JCE 支持所有这 2 个,如下所示 link

https://www.ibm.com/support/knowledgecenter/en/SSYKE2_9.0.0/com.ibm.java.multiplatform.90.doc/user/compsec_jce_algos.html

一般来说,“3-key”和“2-key”(又名 triple-length 和 double-length 密钥)是通常称为 Triple-DES 的密码的 keying options 1 and 2 或3DES or TDES or DES-EDE,虽然官方定义是TDEA。 (在 Java 加密中,DES-EDE 通常拼写时没有连字符,第二部分小写 = DESede——尽管 Cipher.getInstance() 和类似算法查找算法时会忽略大小写。)这适用于password-based 加密和常规 (key-based) 加密。

table 中的映射清楚地表明 IBM 使用 3DES 和 PKCS12 aka rfc7292 in appendix C 定义的这两个密钥选项实现了两种 password-based 加密(用于私钥)方案:

pbeWithSHAAnd3-KeyTripleDES-CBC  OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3}
pbeWithSHAAnd2-KeyTripleDES-CBC  OBJECT IDENTIFIER ::= {pkcs-12PbeIds 4}

IBM 提供了每个名称的几种拼写(省略了 -CBC),对于 3 键方案,还提供了未指定键控的名称 PBEWith{SHA-1,SHA1,SHA}And{3DES,DESede,TripleDES} OID(通常对互换更有帮助){,OID.}1.2.840.113549.1.12.1.3 作为同义词。这可能是为了简化从 Oracle-was-Sun-and-OpenJDK 实现的过渡,该实现 具有调整和缩写名称 PBEWithSHA1AndDESede 的 3 键方案和 OID 作为同义词(后者未记录 AFAICS)。

OTOH IBM 显然在 RC2 和 RC4 的基础上实现了其他四种 PKCS12 方案,使用标准拼写加变体 PBEWith{SHA,SHA-1,SHA1}And{40,128}Bit{RC2-CBC,RC4}(没有 OID?),而 Oracle-and-OpenJDK 8+ 使用 PBEWithSHA1AND{RC2,RC4}_{40,128} 和相应的 OID。去图吧。