0

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

我发现以下关于公共余数的声明: Issuer Public Key Modulus分为两部分,一部分由 N CA 组成——模数的 36 个最高有效字节(颁发者公钥的最左边的数字),第二部分由剩余部分组成N I - (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 获取公钥余数,还是应该根据上述规范手动计算?

4

1 回答 1

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];
于 2017-08-01T16:56:41.520 回答