RSA非对称加密算法,加密和签名
来源:互联网 发布:xquartz for mac 卸载 编辑:程序博客网 时间:2024/06/06 02:20
RAS算法:
1、用RSA算法生成一对密钥,公钥发放给外部客户,私钥自己保管;有以下应用场景:
【公钥加密、私钥解密】或者【私钥签名、公钥验证】
2、非对称加解密的理解:
- 小明想秘密给小英发送消息
- 小英手里有一个盒子(public key),这个盒子只有小英手里的钥匙(private key)才打得开
- 小英把盒子送给小明(分发公钥)
- 小明写好消息放进盒子里,锁上盒子(公钥加密)
- 小明把盒子寄给小英(密文传输)
- 小英用手里的钥匙打开盒子,得到小明的消息(私钥解密)
- 假设小刚劫持了盒子,因为没有小英的钥匙,他也打不开
3、当该用户发送文件时,用私钥签名,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到,这里的签名和加密是不一样的,加密时,对方用公匙(接收方提供的)加密,接收方用自己的私匙解密,数字签名时,是公匙加密的一种逆用,用私匙加密,公匙解密,可以确认发送方身份,加密是为了防止数据被别人截取,重点在数据的安全性,防止被窃听,数字签名是为了身份认证,重点在核实用户身份的真实性,调用支付接口时,商户发信息给支付宝时,用自己的私钥做签名,以供支付宝验证商户的身份。
4.数字签名主要经过以下几个过程:
信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;
信息发送者使用自己的私钥签名信息摘要;
信息发送者把信息本身和已签名的信息摘要一起发送出去;
信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。
所以,一般的,数字签名=私钥加密(hash(原始数据)),如果原始数据比较短,也可以直接对原始数据进行私钥加密
5.证书的作用
非对称算法的公钥是公开的,为了公钥的安全,可以向权威的证书签发机构(ca)申请证书来保护公钥的安全(为公钥盖一个章,防止别人伪造)
以支付宝移动支付为例,调用pay函数时,要传支付信息(订单号,金额,卖家支付宝账号),同时对支付信息用商户的私钥签名(支付宝服务器用商户的公钥验证签名信息),把签名信息和支付信息一起组成字符串作为pay的入参,这样支付宝就可以用公钥解密出签名信息,与字符串中的支付信息做对比,达到验证的目的
但是,如果支付宝服务器被入侵,存放的商户公钥被黑客替换成他伪造的公钥,这样黑客就可以用自己的私钥签名并发送信息给支付宝(调用pay),比如可以把钱支付到他指定的账户中
为了解决这个问题,就可以用数字证书来保护公钥。当然支付宝服务器有其他办法去保护他得公钥,所以不一定需要ca。
更详细信息参考:http://blog.csdn.net/oscar999/article/details/9364101
- RSA非对称加密算法,加密和签名
- RSA加密、解密、签名(非对称加密)
- 非对称加密 RSA加密算法原理简述
- Android加密算法之非对称加密RSA
- JAVA实现RSA加密,非对称加密算法
- 非对称加密和加密算法
- 对称加密,非对称加密和签名
- 数据传输加密非对称加密算法以及对称算法-RSA+AES
- 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)
- 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)
- 数据传输加密:非对称加密算法RSA+对称算法AES(适用于java,android和Web)
- 非对称加密算法RSA
- 非对称加密算法RSA
- 非对称加密算法RSA
- 非对称加密算法RSA
- 非对称加密算法RSA
- 非对称加密算法RSA
- 非对称加密算法RSA
- MFC 消息映射机制剖析
- 函数声明后面加个stdcall是什么意思
- iOS9 ReplayKit 支持设备
- jquery 解析post请求返回得json数据
- UIPickerView与UIDatePicker
- RSA非对称加密算法,加密和签名
- Masonry在iOS7.1的兼容性问题
- Matlab之if-else-end分枝语句
- 如何成长为一名思维缜密的产品经理
- masm中常用的伪指令
- 离线LCA hdu2586 How far away ?
- 如何判断微信内置浏览器(JS & PHP)
- Oracle10g以上sysaux表空间的维护和清理
- 跟我学Guava:基础1.3-常见Object方法和复用他们