RSA加解密与签名验签
2017-09-18 18:08
148 查看
1.RSA介绍
1.消息摘要
如果消息改变了,那么改变之后的消息的指纹和原消息的指纹将不匹配,如果消息的指纹和消息是分开传送的。那么接收者就可以检查消息是否被篡改过。但是,如果我同时知道了消息和指纹,就可以对消息重新计算指纹,那么消息接收者就不会知道消息被篡改了。解决这个问题就用到了RSA,公共密钥加密技术。RSA包括公共密钥和私有密钥。公钥可以告诉任何人。这些密钥之间存在一定的数学关系。
假如我想发送一条消息给我的朋友,我的朋友想知道这个消息是否来至于我,我首先会通过私钥对我发送的消息进行摘要签名。我的朋友在得到这条消息之后会根据我提供的公钥对消息和签名进行校验。从而确定消息没有被篡改过,并且来至于我。
其实大多数时候签名与验签是个相互的过程,例如支付宝支付接口,我用我的私钥进行签名,支付宝用
我提供的公钥进行验签。然后支付宝会用私钥签名返回的信息,我通过支付宝提供的公钥对返回信息进行验签。
2.代码示例
https://github.com/1789304191/rsa-test/blob/master/src/rsa/RSASIGNTEST.java3.RSA非对称加密
当信息通过认证之后,该信息本身是直白可见的,数字签名只不过是负责检验有没有被篡改过,相比之下,信息被加密之后,是不可见的只能用匹配的密钥进行解密。认证对于代码签名已经足够,没必要将代码隐藏起来,但是涉及到个人数据的时候就需要加密了。公共密钥算法比对称密钥算法慢得多,我们可以配合AES使用。
过程:
1)
我用随机生成的AES密钥对我将要发送给我朋友的信息进行加密生成消息。
2)
我用我朋友提供给我的公钥对消息进行加密。
3)
我朋友拿到我的消息后用自己的私钥进行解密。
4)
我朋友用AES密钥对私钥解密后的信息进行解密。最后拿到真正的内容。
4.代码示例
https://github.com/1789304191/rsa-test相关文章推荐
- MD5withRSA签名 DES加密解密
- 学习RSA加密与解密、签名与认证
- 调用OpenSSL实现RSA加解密和签名操作
- Java使用RSA加密解密签名及校验
- JAVA中基于RSA的签名验签/加密解密的实现
- 跨语言平台的RSA加密、解密、签名、验证算法的实现
- Python下实现的RSA加密/解密及签名/验证功能示例
- RSA加密、解密、签名(非对称加密)
- Java使用RSA加密解密签名及校验
- RSA 加解密 签名 示例
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- RSA加密解密及RSA签名和验证
- Java使用RSA加密解密签名及校验
- RSA密钥生成、加密解密、签名验签
- php中rsa加密及解密和签名及验签
- Golang代码搜集-基于RSA的公钥加密私钥解密-私钥签名公钥验证
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- C#的RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出
- 基于Crypto++/Cryptopp的rsa密钥生成,rsa加密、解密,rsa签名、验签
- php rsa 加密、解密、签名、验签