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.add(new ASN1Integer(r));
v.add(new