【数字签名】如何正确地加签验签
- 【数字签名】如何正确地加签验签 推荐度:
- 相关推荐
【数字签名】如何正确地加签/验签
项目上需要用到数字签名,原本是简单的服务器签名,客户端验签的流程。因为ios端没有找到比较好的验签库,故根据网传的步骤实现验签,但死活验签不成功,折腾了半天。
网上的验签流程:
数字签名的技术流程描述如下:
发送方使用摘要算法对原文HASH生成信息摘要;
发送方使用自己的私钥对信息摘要进行签名(加密);
发送方将原文本身和已签名的信息摘要一起发送出去;
接收方使用相同的摘要算法对接收的原文本身生成新的信息摘要;
接收方使用发送方的公钥对已签名的信息摘要进行验签(解密),获得信息发送者的信息摘要;
接收方比较这两个信息摘要是否相同,如果相同则确认信息发送者的身份和信息没有被修改过;否则,则表示被修改过。
流程没有问题,但是摘要算法是如何处理的并没有说清楚,我一直以为是简单的hash处理。但其实不是,这里其实用了两步,第一步利用摘要算法进行hash,第二步对hash添加对应算法的算法标识符,这样得到加密前的原文。举个RSA-SHA256
的栗子:123456
的SHA256的hash是8D969EEF6ECAD3C29A3A629280E686CF0C3F5D5A86AFF3CA12020C923ADC6C92
,但这个并不能直接用于rsa加密,需要加上SHA256的前缀3031300d060960864801650304020105000420
即3031300d0609608648016503040201050004208D969EEF6ECAD3C29A3A629280E686CF0C3F5D5A86AFF3CA12020C923ADC6C92
,这样才能加密后的签名才是正确的签名。
不同算法的前缀参考rfc3447
- matlab多元回归分析怎么计算,matlab在多元线性回归分析中的相关计算
- 谈技术文章翻译的信雅达-上
- rowid与rownum的含义是什么?
- Android权限
- 《C语言程序教程》课后编程题
- 经纬度坐标转换成屏幕坐标
- Android gridview keep item selected
- html怎么多行超出省略号,css+js 如何实现多行文字超出显示省略号(需要同时兼容ie chrome等浏览器)...
- VSS使用技巧
- Set集合之TreeSet
- nodejs+vue 智慧餐厅点餐餐桌预订系统
- VC知识(一)
- HTML5通过js调用手机摄像头
- 小程序列表多个批量倒计时
- SSL单向认证和双向认证交互流程
- SQL——DDBC手册
- 推理题