理论上我知道,如果n=33
、e(公钥)=3
和d(私钥)=7
我可以使用biginteger
类用modpow(e,n)
加密明文
并用modpow(d,n)
解密,但解密后明文
与第一次不一样。
下面是我的代码:
public class KeyTest {
private BigInteger n = new BigInteger("33");
private BigInteger e = new BigInteger("3");
private BigInteger d = new BigInteger("7");
public static void main(String[] args) {
KeyTest test = new KeyTest();
BigInteger plaintext = new BigInteger("55");
System.out.println("Plain text: " + plaintext);
BigInteger ciphertext = test.encrypt(plaintext);
System.out.println("Ciphertext: " + ciphertext);
BigInteger decrypted = test.decrypt(ciphertext);
System.out.println("Plain text after decryption: " + decrypted);
}
public BigInteger encrypt(BigInteger plaintext) {
return plaintext.modPow(e, n);
}
public BigInteger decrypt(BigInteger ciphertext) {
return ciphertext.modPow(d, n);
}
}
输出为:
Plain text: 55 Ciphertext: 22 Plain text after decryption: 22
您的明文(55
)大于模数(33
),因此实际上无法加密消息。考虑以下略有不同的示例:
p=11
Q=17
n=187
phi(n)=160
E=3
d=107
则e*d=321
=1 mod phi(n)
因此将代码更改为:
private BigInteger n = new BigInteger("187");
private BigInteger e = new BigInteger("3");
private BigInteger d = new BigInteger("107");
public static void main(String[] args) {
KeyTest test = new KeyTest();
BigInteger plaintext = new BigInteger("55");
System.out.println("Plain text: " + plaintext);
BigInteger ciphertext = test.encrypt(plaintext);
System.out.println("Ciphertext: " + ciphertext);
BigInteger decrypted = test.decrypt(ciphertext);
System.out.println("Plain text after decryption: " + decrypted);
}
public BigInteger encrypt(BigInteger plaintext) {
return plaintext.modPow(e, n);
}
public BigInteger decrypt(BigInteger ciphertext) {
return ciphertext.modPow(d, n);
}
}
输出:
Plain text: 55
Ciphertext: 132
Plain text after decryption: 55
问题内容: 我想为我的应用程序提供基于RSA算法的简单许可机制。 有免费的RSA库吗? 问题答案: 只需使用和软件包即可。它在Java标准平台中。 官方文档链接: 包装文件 包装文件
我试图在Java中实现Prim的算法,用于我的图形HashMap LinkedList和一个包含连接顶点和权重的类Edge: 我的想法是,从一个给定的顶点开始:1)将所有顶点保存到一个LinkedList中,这样每次访问它们时我都可以删除它们2)将路径保存到另一个LinkedList中,这样我就可以得到我的最终MST 3)使用PriorityQueue找到最小权重 最后我需要MST,边数和总重量。
本文向大家介绍java 非对称加密算法RSA实现详解,包括了java 非对称加密算法RSA实现详解的使用技巧和注意事项,需要的朋友参考一下 现在就为大家介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1、公钥加密,私钥解密;2、私钥加密,公钥解密。下面就为大家分析一下实现代码,相对于DH算法,RSA显得有些简单。 初始化密钥: 1、私钥加密,公钥解密: 2、公钥加密,私钥解密: 根据
本文向大家介绍python实现RSA加密(解密)算法,包括了python实现RSA加密(解密)算法的使用技巧和注意事项,需要的朋友参考一下 RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其密钥的长度足够长,用RSA加密
本文向大家介绍使用python实现rsa算法代码,包括了使用python实现rsa算法代码的使用技巧和注意事项,需要的朋友参考一下 RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名。 维基百科给出的RSA算法简介如下: 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥: 随意选择两个大的质数p和q,
null