【发布时间】:2017-03-05 12:50:53
【问题描述】:
我在 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:无法识别编码的密钥规范
你能告诉我我做错了什么吗?
附: 生成 PrivateKey 后,我想用它签署另一个字符串。 为此,我找到下一个代码:
Signature sig = Signature.getInstance("SHA256withECDSA");
sig.initSign(priv);
sig.update(token.getBytes());
这是正确的方法吗?或者其中的某些东西会导致另一个异常?
【问题讨论】:
标签: android ecdsa spongycastle