1. 它的加密算法以及加签验签原理
因为网络上关于ECC的原理,加签验签原理都非常的多,我这边就不在进行原理方面的详述了,建议不是太懂的小伙伴看这个知乎的文章,写的非常详细:
2. 关于在android与java中进行加签验签的方法与注意点
private static final String SIGNALGORITHMS = "SHA256withECDSA";
private static final String ALGORITHM = "EC";
private static final String PROVIDER = "BC";
2.1 BC和java以及android使用的ECDSA签名格式为DER编码的ASN.1格式,其中包含两个整数值r和s,并且应该为70字节,但是一般情况下ECDSA加签方法不是由java生成的话,它的格式不会是适合我们直接可以使用的r|s格式,因此可以使用一下方式来进行格式转换,使得我们可以直接使用,完成验签操作。
private static byte[] DEREncodeSignature(byte[] signature) throws IOException {
BigInteger r = new BigInteger(1, Arrays.copyOfRange(signature, 0, 32));
BigInteger s = new BigInteger(1, Arrays.copyOfRange(signature, 32, 64));
ASN1EncodableVector v = new ASN1EncodableVector();
v.

本文不涉及ECC加密算法原理的详细解释,而是关注Android和Java中使用ECDSA进行加签验签的具体方法。重点讨论了在Android中由于缺少ECDSA生成私钥的包,需要引入BC库进行验签,而在Java中则可以直接操作。同时,提到了签名格式通常为DER编码的ASN.1格式,包括r和s两个整数值,以及如何处理非标准格式的签名以便于验签。
https://zhuanlan.zhihu.com/p/97953640
最低0.47元/天 解锁文章
1848





