我一直在玩 Bouncy Castle 的 RSA(轻量级 API)实现,并弄清了基础知识。查看他们的 JCE 提供程序实现规范,我注意到不同的填充方案可以与 RSA 一起使用。据我了解,默认情况下使用空填充。所以我开始探索 OAEP 填充,特别是OAEPWithSHA512AndMGF1Padding
. 用谷歌搜索不是很有帮助,所以我开始挖掘 BC 的源代码并找到org.bouncycastle.jce.provider.JCERSACipher
类。但是看的initFromSpec
很快就让我头疼了……具体来说,我不明白最后两个可以传递给OAEPEncoding
构造函数的参数是什么。根据 BC 的 API OAEPEncoding
,允许四个参数的构造函数接受Digest mgf1Hash
和byte[] encodingParams
作为最后两个参数。这让我很困惑,因为我不知道如何获取掩码生成算法的实例,也不了解称为encodingParams
. 下面的代码中arg3
和的值应该是什么?arg4
RSABlindedEngine rsa = new RSABlindedEngine();
SHA512Diges sha512 = new SHA512Digest();
Digest arg3 = ???;
byte[] arg4 = ???;
AsymmetricBlockCipher cipher = new OAEPEncoding(rsa, sha512, arg3, arg4);