Проверьте подписанные данные с помощью проверки в Android
Привет, я пишу эту функцию для входа в данные, используя secp256k1 в Android, но когда я пытаюсь проверить данные, это не сработало.
Вот мой знак функции в Android.
функция для проверки данных это
public static String sign(byte[] data, String privateKey) throws Exception {
byte[] keyBytes = decryptBASE64(privateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("EC","BC");
PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);
Signature signature = Signature.getInstance("SHA256withECDSA");
signature.initSign(priKey);
signature.update(data);
return encryptBASE64(signature.sign());
}
public static boolean verify(byte[] data, String publicKey, String sign)
throws Exception {
byte[] keyBytes = decryptBASE64(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("EC");
PublicKey pubKey = keyFactory.generatePublic(keySpec);
Signature signature = Signature.getInstance("SHA256withECDSA");
signature.initVerify(pubKey);
signature.update(data);
return signature.verify(decryptBASE64(sign));
}
Но проверочный код не сработал. пожалуйста, что не так в моем коде.