请注意这里是加签验签,如有加密解密需求的,还请移步
Signature 类
Signature类是一个引擎类,提供加密的数字签名算法,例如DSA或RSAwithMD5。加密安全签名算法采用任意大小的输入和私钥,并生成一个相对较短(通常是固定大小)的字节串——签名。
- 只有私钥/公钥对的所有者才能创建签名。对于拥有公钥的任何人来说,恢复私钥在计算上是不可行的。
- 用于生成签名的私钥相对应的公钥,可以验证输入的真实性和完整性。
- 签名和公钥不会泄露有关私钥的任何信息。
简而言之,
1.创建一对Key:私钥&公钥。
2.使用私钥创建签名
3.使用公钥对数据的真实性进行校验。
值得注意的是,Signature算法目的并不在于对原数据加密,而是使用原数据和私钥/公钥生成签名,验签时,使用公钥/私钥,签名,原数据进行校验。
应用场景:用于需要使用这份数据,又不能确定接收数据的可靠性。
使用流程:
1.获取公私钥对,代码如下:
/**
* 获取公私钥对
*
* @return
*/
private static Map<String, String> getKeyPair() throws NoSuchAlgorithmException {
KeyPairGenerator generator = null;
generator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
//初始化秘钥size,最小为512
generator.initialize(1024);
KeyPair keyPair = generator.generateKeyPair();
String privateKey = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
String publicKey = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
Map<String, String> keyMap = new HashMap<>();