java - 打印 RSA 私钥实际上并没有返回它

标签 java rsa

我正在尝试生成用于 Java 中的 SSH 的公钥/私钥对,这只是一个测试类,以确保我正在生成正确类型的 key 。

但是,当我将私钥打印到控制台时,它不会打印完整的私钥。

这是我的源代码:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.spec.InvalidKeySpecException;

public class Crypto
{
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeySpecException
    {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

        keyGen.initialize(1024);

        KeyPair test = keyGen.genKeyPair();

        System.out.println(test.getPrivate());
        System.out.println(test.getPublic());
    }
}

我正在运行 Java JDK 1.7_45,这是在 eclipse 中运行时的完整控制台输出:

sun.security.rsa.RSAPrivateCrtKeyImpl@2bd00
Sun RSA public key, 1024 bits
  modulus: <removed because it's so long>
  public exponent: 65537

@符号后面的字符串不断变化,但我不认为它实际上是私钥。

在此先感谢您的帮助!

编辑: 抱歉,我实际上没有问我的问题,我只是陈述了我的问题。 我的完整问题是:如何将私钥作为常规字符串访问?

最佳答案

您可以将私钥转换为正确的实现类型,在本例中为 RSAPrivateKey(甚至是 RSAPrivateCrtKey),然后提取各个 BigInteger 组件并将它们格式化为任何格式您需要的方式。

例子:

KeyPair test = keyGen.genKeyPair();
RSAPrivateKey priv = (RSAPrivateKey) test.getPrivate();
System.out.println(priv.getModulus());
System.out.println(priv.getPrivateExponent());

关于java - 打印 RSA 私钥实际上并没有返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166352/

相关文章:

java - 找出前 N 个五边形数

java - 如何使用 Spring 将属性值注入(inject)到枚举或普通类的静态属性或方法中?

使用 OpenSSL key 的 Java 加密

java - 从文件创建二叉树

java - 使用 JDK 6 中捆绑的 jax-rs 引用实现构建 Web 服务

cryptography - 基于 key 大小的 RSA 性能

openssl - RSA:获取给定公钥的指数和模数

c++ - C++中这行代码的含义

java - Java中Lucene 3.0能否获得按频繁更新字段排序的实时搜索结果

encryption - 在 Go 中使用 RSA 进行 key 交换的 AES 加密通信