从ssh-keygen输出生成Java中的公共密钥

时间:2019-05-24 08:26:47

标签: java security cryptography ssh-keygen

我试图在Java中生成一个公共密钥对象,解析ssh-keygen生成的公共密钥的字符串版本。

ssh-keygen输出一个公共密钥文件,其内容为:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmZBuZSoXcwJnLqFWxGCq2D5wrn32Cezn2HGIrzepGsFgEx340Z4CgkyZmPpOPz/ByMScf17rc0rTk39BlDUPH2xNSuxUc0aHCV/psx4B1XiJpmlB+9Kd8iijGfVH30qmVF8HCnKrXVOb2AItN/lKR5MYrrdgWNi0Hzm0xrFPZPk/hVtsLManAuZ8mGuokpyhCXKwJarVlzN4lKQJUL9DU9gH6lnpjs8HKPJyvAES3/uP9hVX1BovvZ+EtvHnNyaGia1E/unDxznz5jfWGsGPnuSPNORVXfXGOzbttciXlyf87F6KAq0T077RtyITfJfaQG8Tr6goQxsBDzU/u7W+t bob@desktop

如何解析和生成这种格式的公钥?我已经逛了好几个小时。

我尝试将文件转换为.pem,得到elgid error。我已经在线尝试了其他公钥文件,但是它们已经出现在:

MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHyL5RpI33GyOCqX22s/tsX2xxS4
6UuG3pIOvBrHKcWPhciWKXB6JjXGUCy4nPPHN+Y9xN9D6YbOWSj995eCafavUq57
Whn/i+PEbIjpiwBcYQMCB8XGeyuwv9ngvflzLrOGgHsmFN5br2fD8pZ6ZbBIQEdG
slP9m/pdsnJtFdlZAgMBAAE=

从MI而不是AAAA开始。

这些键可以正常工作,但是我分配给它使用的输出是AAAA样式。

public void generatePublicKey(String publicKeyString) throws NoSuchAlgorithmException, InvalidKeySpecException {
    byte[] data = Base64.getDecoder().decode((publicKeyString.getBytes()));
    X509EncodedKeySpec spec = new X509EncodedKeySpec(data);
    KeyFactory fact = KeyFactory.getInstance("RSA");
    publicKey = fact.generatePublic(spec);      
}

密码应该采用公钥并加密AES密钥。

InvalidKeySpecException: java.security.InvalidKeyException: invalid key format

0 个答案:

没有答案