- 签名:
私钥签名, 公钥验签
// 私钥签名
String sign = RsaInstance.sign("待签名的内容" , privateKey);
// 公钥验签
Boolean check = RsaInstance.verify("待签名的内容", sign, publicKey);
-
加密:
公钥加密, 私钥解密 -
签名和加密共同使用示例 :
A的公钥pubKeyA, A的私钥priKeyA
B的公钥pubKeyB, B的私钥priKeyB
A想把字符串String str签名加密后传给B, 流程如下:3.1. A用priKeyA对str签名得到sign,
3.2. A然后用pubKeyB对str和sign加密得到密文secret,
3.3. B先用priKeyB对密文secret解密得到str和sign,
3.4. B然后用pubKeyA对str,sign验签, 证明str是A发送给B的,
3.5. 至此, A已完成发送给B的信息str的任务. -
分析 :
A有3个钥匙:pubKeyA, priKeyA, pubKeyB
B有3个钥匙:pubKeyB, priKeyB, pubKeyA
A用A的私钥签名, 因为B有A的公钥, 所以可以验签,
A用B的公钥加密, 因为B有B的私钥, 所以可以解密.
A加密, 是为了防止被窃听,
B验签, 是为了证明是A想发的内容, 而不是被更改的内容.