相关疑难解决方法(0)

您如何测试公共/私人DSA密钥对?

有一种简单的方法可以验证给定的私钥是否与给定的公钥匹配?我有一些*.pub和一些*.key文件,我需要检查哪个与哪个.

同样,这些是发布/密钥文件,DSA.

我真的更喜欢某种单线......

encryption ssl openssl key

160
推荐指数
7
解决办法
15万
查看次数

我们如何将字符串从PEM转换为DER格式

从以下格式发送字符串:

-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

如何从此字符串构造PublicKey对象?尝试了以下删除页眉和页脚和base64解码缓冲区

public static PublicKey getFromString(String keystr) throws Exception
  {
  //String S1= asciiToHex(keystr);
   byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
   X509EncodedKeySpec spec =
       new X509EncodedKeySpec(keyBytes);
     KeyFactory kf = KeyFactory.getInstance("RSA");
     return kf.generatePublic(spec);

  }
Run Code Online (Sandbox Code Playgroud)

这可能会作为无效的密钥格式失败,也会失败

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence
 at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)
 at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
 at PublicKeyReader.getFromString(PublicKeyReader.java:30)
 at Tst.main(Tst.java:36)
Run Code Online (Sandbox Code Playgroud)

密钥是通过openSSL的API生成的 PEM_write_bio_RSAPublicKey(bio, rsa);

java cryptography jce

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

如何在Java中验证公钥和私钥对

有没有办法在java中验证给定的私钥,比如某些*.key文件是否与某个公钥匹配,使用RSA算法到某个.pub文件?

java cryptography rsa

5
推荐指数
2
解决办法
3326
查看次数

标签 统计

cryptography ×2

java ×2

encryption ×1

jce ×1

key ×1

openssl ×1

rsa ×1

ssl ×1