非对称加密算法的一种
byte[] keyByte=(Key)publicKey.getEncoded();
String key=Base64.getEncoder().encodeToString(keyByte);
byte[] keyBytes = Base64.getDecoder().decode(key); //衔接 先转换byte[]
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); //RSA算法
Key publicK = keyFactory.generatePublic(x509KeySpec);
byte[] keyByte=(Key)privateKey.getEncoded();
String key=Base64.getEncoder().encodeToString(keyByte);
byte[] keyBytes = Base64.getDecoder().decode(key); //先转换byte[]
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
prkA,pukA,prkB,pukB,A向B发送信息
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); //签名算法
signature.initSign(prkA);
signature.update(data);
signature.sign()返回签名byte[] 同上可转为字符串.
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(publicKey);
signature.update(data);
signature.verify(Base64.getDecoder().decode(sign));
//注意验证时需提供解密内容,A的签名sign(注意String还是byte[]),以及A的公钥 返回boolean