相关疑难解决方法(0)

将pem键转换为ssh-rsa格式

我有一个der格式的证书,从这个命令我生成一个公钥:

openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Run Code Online (Sandbox Code Playgroud)

结果如下:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的公钥?来自证书还是来自这个公钥?

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Run Code Online (Sandbox Code Playgroud)

这是通过以下命令获得的:

ssh-keygen -y -f private_key1.pem > public_key1.pub
Run Code Online (Sandbox Code Playgroud)

openssl openssh

132
推荐指数
7
解决办法
17万
查看次数

Java非对称加密:存储公钥/私钥的首选方式

此代码生成一对公钥/私钥:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair keypair = keyGen.genKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
Run Code Online (Sandbox Code Playgroud)

我想知道的是你通常如何存储公钥:

选项1:存储字节

byte[] privateKeyBytes = privateKey.getEncoded();
byte[] publicKeyBytes = publicKey.getEncoded();
// ... write to file

// convert bytes back to public/private keys
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);

EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);
PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是将代码绑定到具体的实现,如PKCS8EncodedKeySpecX509EncodedKeySpec.

选项2:存储模数和指数

KeyFactory fact = KeyFactory.getInstance("RSA");
RSAPublicKeySpec pub = fact.getKeySpec(publicKey, RSAPublicKeySpec.class);
RSAPrivateKeySpec priv = …
Run Code Online (Sandbox Code Playgroud)

java encryption encryption-asymmetric

12
推荐指数
1
解决办法
2万
查看次数

ssh-keygen和openssl提供了两个不同的公钥

ssh-keygen和openssl是否可以从同一私钥生成两个不同的公钥?Command ssh-keygen -y -f ./my.key会给(ssh-rsa同一行之后的内容)与使用command 生成的一个(在-----BEGIN PUBLIC KEY-----和之间的内容)不同的公共密钥。-----END PUBLIC KEY-----openssl rsa -in my.key -pubout

encryption openssl rsa ssh-keys key-pair

3
推荐指数
1
解决办法
1620
查看次数