我尝试使用以下代码段
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);
但挑战是不是得到认证? 任何线索???
提前感谢。