建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
已解决

Java中的RSA解密,未使用RSA库10LK

P,Q和E的值由用户提供并检查它们是否是素数。程序找到N和D.加密和解密出现故障。我在这里看了几个问题,其中大多数都都使用了库,我不打算使用它。

JMenuItem mntmEncrypt = new JMenuItem("Encrypt");mntmEncrypt.addActionListener(new ActionListener() {
    @SuppressWarnings("null")
    public void actionPerformed(ActionEvent ev) {
        textArea_1.setText("");
        String blah = textArea.getText();
        int something;
        for(int i=0; i

和解密故障:

JMenuItem mntmDecrypt = new JMenuItem("Decrypt");mntmDecrypt.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent em) {
        textArea_1.setText("");
        String blah2 = textArea.getText();
        String[] somethingElse = blah2.split(" ");
        char character;
        for(int i=0;i

我使用这个计算器检查了dec的值,这是完全错误但我不明白为什么。任何帮助,将不胜感激。除了enc和dec之外,我不能做任何BigInteger。


2020-06-06
0
请先登陆或注册

Mecoooo2020-06-06

答案很简单:您正在使用Math.pow

Math.pow适用于double值-因此它使用浮点数。浮点数永远不会精确,因此您的结果已经搞砸了。

如果您真的想手动计算RSA,可以使用BigInteger.modPow(..)

但是,您的项目不是学习项目,我强烈建议您使用Java密码术扩展。因此,使用BigInteger值并创建RSAPrivateKeySpec / RSAPublicKeySpec使其与密码类一起使用。

例如,请参见此问题:为给定的模数和指数生成RSA密钥


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 0
  • 6
  • 8
  • 1
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励