数字签名
2015-06-17 16:27
155 查看
签名获取算法:
1、 首先计算被签名数据T_DATA的SHA-1值H_DATA(20字节):SHA-1(T_DATA,H_DATA)
2、 在H_DATA尾部填充随机数(n-20字节),得到和"RSA公钥/私钥"密钥长度(n字节)相同的H_BLOCK
3、 用RSA私钥加密H_BLOCK,得到E_SIGN:RSA(H_BLOCK, RSA_VK, E_SIGN)
4、 E_SIGN即为T_DATA的电子签名。T_DATA和E_SIGN一般会存放到一起,便于随时验证T_DATA的合法性和完整性。
签名验证算法:
1、 用RSA公钥解密E_SIGN,假设得到H_BLOCK1(长度位n字节)
_RSA(E_SIGN, RSA_UK, H_BLOCK1)
2、 计算被签名数据T_DATA的SHA-1值,假设输出为H_DATA1
SHA1(T_DATA,H_DATA1)
3、 比较H_DATA1和H_BLOCK1中的H_DATA,如果两者相等,则表示T_DATA是合法有效的;如果不相等,则可能是T_DATA或者E_SIGN被篡改了。
(拥有PVK的才是合法的,必须保证PVK的绝对安全)
1、 首先计算被签名数据T_DATA的SHA-1值H_DATA(20字节):SHA-1(T_DATA,H_DATA)
2、 在H_DATA尾部填充随机数(n-20字节),得到和"RSA公钥/私钥"密钥长度(n字节)相同的H_BLOCK
3、 用RSA私钥加密H_BLOCK,得到E_SIGN:RSA(H_BLOCK, RSA_VK, E_SIGN)
4、 E_SIGN即为T_DATA的电子签名。T_DATA和E_SIGN一般会存放到一起,便于随时验证T_DATA的合法性和完整性。
签名验证算法:
1、 用RSA公钥解密E_SIGN,假设得到H_BLOCK1(长度位n字节)
_RSA(E_SIGN, RSA_UK, H_BLOCK1)
2、 计算被签名数据T_DATA的SHA-1值,假设输出为H_DATA1
SHA1(T_DATA,H_DATA1)
3、 比较H_DATA1和H_BLOCK1中的H_DATA,如果两者相等,则表示T_DATA是合法有效的;如果不相等,则可能是T_DATA或者E_SIGN被篡改了。
(拥有PVK的才是合法的,必须保证PVK的绝对安全)
相关文章推荐
- iphone使用keychain来存取用户名和密码
- Eclipse 中设置JVM 内存及JVM监控调优
- DOM
- OpenERP重载create方法
- 监控SharePoint效率之(六) –优化内容存储和访问
- java使用tomcat数据源连接mysql
- QLearning
- 《你的灯亮着吗》读书笔记二
- [转载] unity+高通vuforia开发增强现实(AR)教程(一)
- 关于缺省路由传递问题的探讨(ip default-network、ip default-gateway、ip route 0/0)
- 安装cacti可能出现的问题
- 触发器和存储过程的使用
- 在谷歌地图上显示您的位置
- Android_Json_FastJson数据解析
- 加解密入门
- rootless 关闭,打开
- 读载波地址的方法
- java获取当前年月日
- 微软100题(97)洗牌算法
- 网站可以免费做业务CMS讨论