java中数字签名MD5withRSA和SHA1withRSA

加密算法

一、简介

数字签名用于验证消息发送者的身份,确保其他人无法伪造身份。

二、原理

数字签名基于非对称加密算法,利用只有拥有者才有私钥的特性(这可以标识身份)进行的。

1、数字签名的生成

对发送内容先生成有限长度的摘要,再使用私钥进行加密,进而生成数字签名。

2、数字签名验证

用公钥对数字签名进行解密获取加密内容(其实也就是摘要),再用与发送方相同的摘要算法对发送内空生成摘要,

再将这两者进行比较,若相等,则验证成功,否则失败。

三、代码实例

在此使用java自带的数字签名api进行演示,包括MD5withRSA和SHA1withRSA两种方式,签名使用base64编码。

输出结果如下:

content :study hard and make progress everyday sign with md5 and rsa :L0pxR69rmOYoWoHdOJHKEvHDVdEamrqQlmYV4Yrwfz0BFIAKgSL4tGyw+4G3WDiOCHeZMPAPM/F39Ygxc1rtMg== verify sign with md5 and rsa :true sign with sha1 and rsa :jBhPcFAhZ7mGcc3jjVhmyybIPNwnIMPzGQ+piQf6RyMbICtYzT/xxG2P0rQ09t8+9ybp/NIWy83I5kWIs3MZfg== verify sign with sha1 and rsa :true
经验分享 程序员 微信小程序 职场和发展