加密算法
一、简介
数字签名用于验证消息发送者的身份,确保其他人无法伪造身份。
二、原理
数字签名基于非对称加密算法,利用只有拥有者才有私钥的特性(这可以标识身份)进行的。
1、数字签名的生成
对发送内容先生成有限长度的摘要,再使用私钥进行加密,进而生成数字签名。
2、数字签名验证
用公钥对数字签名进行解密获取加密内容(其实也就是摘要),再用与发送方相同的摘要算法对发送内空生成摘要,
再将这两者进行比较,若相等,则验证成功,否则失败。
三、代码实例
在此使用java自带的数字签名api进行演示,包括MD5withRSA和SHA1withRSA两种方式,签名使用base64编码
public class DigitalSignatureMain {
public static void main(String[] args) throws Exception {
String content = "study hard and make progress everyday";
System.out.println("content :"+content);
KeyPair keyPair = getKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
String md5Sign = getMd5Sign(content,privateKey);