java - 使用 Bouncy CaSTLe 获取 RSA 公钥剩余部分

标签 java cryptography rsa bouncycastle chinese-remainder-theorem

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

我发现以下关于公共(public)余数的声明: 发行人公钥模数分为 两部分,一部分由 N 组成 CA – 36 个最高有效字节 模数(发行者公钥的最左边的数字)和第二部分 由剩余的N组成 我 - (N CA – 36) 模数的最低有效字节 (发行人公钥剩余部分)

本书中: 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 获取公钥余数还是应该根据上述规范手动计算它?

最佳答案

不,BouncyCaSTLe 不提供 API 来获取公钥余数,因为 BouncyCaSTLe 提供了 RSA 的通用实现,相反,公钥余数并不经常使用:它主要仅由集成电路卡使用以及相关软件。

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

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

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

关于java - 使用 Bouncy CaSTLe 获取 RSA 公钥剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443093/

相关文章:

encryption - j2me 的充气城堡提供者 jar

java - 如何修复 javax.crypto.IllegalBlockSizeException?

java - 安卓/Java : trim cut the latitude for map view

java - 关于 Grails map 的帮助

java - 为什么 EncryptedPrivateKeyInfo 无法在 Java 中读取我的 PKCS#8 加密私钥?

java - 如何在 Java 中使用 OID 获取哈希算法名称?

java - Grails 密码使用 rsa 加密

java - RSA 和 Base64 编码字节过多

java - Jbutton 没有清除我的文本字段

java - 二分查找的使用示例