我试图在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