【问题标题】:RSA Encrypt/Decrypt in JavaJava中的RSA加密/解密
【发布时间】:2011-12-10 04:53:57
【问题描述】:

我是密码学的新手。我获得了一个 base64 格式的 RSA 公钥。有没有办法只使用公钥加密一些文本。我也需要模数/指数吗?

任何指针都会非常有帮助。谢谢

【问题讨论】:

  • 我无法生成 RSA 公钥对象。据我所知,它需要模数和指数。 RSAPublicKeySpec(BigInteger 模数,BigInteger publicExponent)。我只有公钥文件。有没有办法只使用密钥文件来创建 RSAPublicKeySpec。我查看了 Bouncy Castle 图书馆,但找不到任何有用的东西。

标签: java encryption rsa


【解决方案1】:

我也很感兴趣,我去“Google-ing”发现了这个有趣的页面。这是很多信息,但在我看来非常有趣。

http://www.di-mgt.com.au/rsa_alg.html

【讨论】:

    【解决方案2】:

    说它是 base64 格式是不够的。至少有两种常见的方式可以格式化 RSA 公钥,其中任何一种都可以进行 base64 编码。如果幸运的话,密钥是 X509EncodedKeySpec。如果是,则需要对其进行base64解码,创建KeyFactory,然后使用KeyFactory生成公钥。这里有一些未经测试,甚至没有编译的代码,希望能显示这些步骤。

    // Example using the base64 class from http://iharder.sourceforge.net/current/java/base64/
    
    byte [] x509Key = Base64.decode(base64Key);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    RSAPublicKey rsaPub = (RSAPublicKey) kf.generatePublic();
    

    如果您的 base64 键周围有 -----BEGIN 和 ----END 行,请删除它们。

    【讨论】:

      【解决方案3】:

      公钥用于解密已被私钥加密的密文。

      每个想要通信的用户都有一对加密密钥——一个公共加密密钥和一个私有解密密钥。

      您可以使用公钥进行加密,因为密钥是通过数学方法推导出来的,但参数的选择使得从公钥中确定私钥的成本非常高。

      【讨论】:

      • 假设用户 A 生成密钥(公钥/私钥)并为用户 B 提供公钥。我认为用户 B 使用公钥加密。然后,用户 A 可以使用私钥/公钥对其进行解密。
      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2014-07-12
      • 2013-03-02
      相关资源
      最近更新 更多