【问题标题】:RSA decrypt with Java使用 Java 进行 RSA 解密
【发布时间】:2010-11-17 05:07:41
【问题描述】:

我正在尝试使用 RSA 解密字符串。它在 iPhone 上用 C# 加密,我有私钥。这似乎是一个愚蠢的问题,但我看到的所有示例都显示生成私钥。我有私钥(它是十六进制的字节 [])。它使用 PKCS#1 填充。我不知道该怎么做的部分是使用我已经拥有的私钥创建一个 java.security.Key 对象。

我是否需要让他们将私钥分成两部分……模数和指数?

提前致谢。

【问题讨论】:

  • 我们需要更多信息——有很多方法可以表示密钥。德尔?质子交换膜? PKCS#8?
  • 它正在使用 PKCS#1 填充...不过应该只是更改 Cipher 实例,对吧?
  • 另外,私钥本身可能已加密(这很常见),在这种情况下,您需要知道加密算法和密码。
  • 那么你有一个二进制 ASN.1 blob 吗? (如果您不确定,请先尝试通过dumpasn1openssl dumpasn1 -inform DER 运行它。)
  • ...derh,应该是openssl asn1parse -inform DER,brainfart。

标签: java rsa encryption private-key


【解决方案1】:

您需要通过 RSAPrivateKeySpec。这是一个示例(基于this):

        BigInteger n = new BigInteger(nBytes);
        BigInteger p = new BigInteger(pBytes);
        RSAPrivateKeySpec privateSpec = new RSAPrivateKeySpec(n, p);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        Key privateKey = kf.generatePrivate(privateSpec);

【讨论】:

  • 我想我的问题是我的私钥是十六进制的字节数组...0x12、0xe3等。我想解决方案是我需要模数和指数。跨度>
  • 实际上,看起来您链接的库中的 SshRsaPrivateKey 具有适当的构造函数。 codase.com/search/…
  • 所以,它确实......我会试一试。感谢梅雷迪思和劳伦斯的帮助。
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2012-07-13
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多