如何将base64字符串转换为公钥?

时间:2014-11-03 16:31:46

标签: java encryption encoding rsa

我尝试使用以下代码段

stringToPublicKey()
{
byte[]  strByte = DatatypeConverter.parseBase64Binary(string);
KeyFactory  keyFact = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec x509KeySpec = new PKCS8EncodedKeySpec(strByte);
PrivateKey  returnKey = keyFact.generatePrivate(x509KeySpec);
return returnKey; 
}   

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(Unknown Source)
at java.security.KeyFactory.generatePrivate(Unknown Source)

然后我尝试了另一个keySpec,例如。 X509EncodedKeySpec 但仍然得到同样的错误。

我的目标是使用给定的公钥对数据进行签名

    // Compute digest
    MessageDigest sha1 = MessageDigest.getInstance("SHA-512");
    byte[] digest = sha1.digest(data);

    // Encrypt digest
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE, stringtoPublicKey(key_in_string));
    byte[] cipherText = cipher.doFinal(digest);

但挑战是不是得到认证? 任何线索???

提前感谢。

0 个答案:

没有答案