使用Bouncy Castle获取RSA公钥剩余部分

时间:2017-08-01 16:27:40

标签: java cryptography rsa bouncycastle chinese-remainder-theorem

我是密码学的新手,我想知道是否有任何已经实现的方法来获取公钥。

我发现以下关于公共剩余部分的陈述: Issuer Public Key Modulus 分为 两部分,一部分由N组成 CA   - 36个最重要的字节 模数(发行人公钥的最左边的数字)和第二部分 由剩余的N组成 一世 -  (N CA   - 36)模数的最低有效字节 (the Issuer Public Key Remainder

本书中的

http://mech.vub.ac.be/teaching/info/mechatronica/finished_projects_2007/Groep%201/Smartcard_files/EMV%20v4.1%20Book%202.pdf

我正在使用 org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters#getModulus

获得模数部分。

我可以使用Bouncy Castle获取公钥余数,还是应该根据上述规范手动计算?

1 个答案:

答案 0 :(得分:1)

不,BouncyCastle不提供获取公钥余数的API,因为BouncyCastle提供了RSA的一般实现,相反,公共密钥余数并不经常使用:它主要仅用于集成电路卡和相关的软件。

所以,如果你需要得到余数,你必须自己计算。如果不处理集成电路卡,则不必担心其余部分。

现在,这里有一种计算余数的方法(我们假设定义了Ni和Nca):

BigInteger modulus = ...;
int nbytes = Ni − (Nca − 36);
BigInteger remainder = modulus.divideAndRemainder(BigInteger.valueOf(2).pow(8*nbytes))[1];