我在 base64 中有 ECDSA 私钥字符串(我用这个https://stackoverflow.com/a/8571649/7661555答案中的正则表达式检查了这个字符串)。
我尝试从这个字符串生成 PrivateKey 实例。我在我的项目中包含 SpongyCastle,并尝试使用以下代码生成它:
PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", "SC");
PrivateKey priv = keyFactory.generatePrivate(privKeySpec);
但是当我运行这段代码时,我得到下一个异常:
W/System.err:java.security.spec.InvalidKeySpecException:无法识别编码的密钥规范
你能告诉我我做错了什么吗?
PS 生成 PrivateKey 后,我想用它签署另一个字符串。为此,我找到下一个代码:
Signature sig = Signature.getInstance("SHA256withECDSA");
sig.initSign(priv);
sig.update(token.getBytes());
这是正确的方法吗?或者这其中的某些东西会导致另一个例外?