RSA加解密与签名验签

1.RSA介绍

1.消息摘要


如果消息改变了,那么改变之后的消息的指纹和原消息的指纹将不匹配,如果消息的指纹和消息是分开传送的。那么接收者就可以检查消息是否被篡改过。但是,如果我同时知道了消息和指纹,就可以对消息重新计算指纹,那么消息接收者就不会知道消息被篡改了。解决这个问题就用到了RSA,公共密钥加密技术。RSA包括公共密钥和私有密钥。公钥可以告诉任何人。这些密钥之间存在一定的数学关系。
假如我想发送一条消息给我的朋友,我的朋友想知道这个消息是否来至于我,我首先会通过私钥对我发送的消息进行摘要签名。我的朋友在得到这条消息之后会根据我提供的公钥对消息和签名进行校验。从而确定消息没有被篡改过,并且来至于我。
其实大多数时候签名与验签是个相互的过程,例如支付宝支付接口,我用我的私钥进行签名,支付宝用
我提供的公钥进行验签。然后支付宝会用私钥签名返回的信息,我通过支付宝提供的公钥对返回信息进行验签。

2.代码示例

https://github.com/1789304191/rsa-test/blob/master/src/rsa/RSASIGNTEST.java

3.RSA非对称加密

当信息通过认证之后,该信息本身是直白可见的,数字签名只不过是负责检验有没有被篡改过,相比之下,信息被加密之后,是不可见的只能用匹配的密钥进行解密。认证对于代码签名已经足够,没必要将代码隐藏起来,但是涉及到个人数据的时候就需要加密了。
公共密钥算法比对称密钥算法慢得多,我们可以配合AES使用。
过程:
1) 我用随机生成的AES密钥对我将要发送给我朋友的信息进行加密生成消息。
2) 我用我朋友提供给我的公钥对消息进行加密。
3) 我朋友拿到我的消息后用自己的私钥进行解密。
4) 我朋友用AES密钥对私钥解密后的信息进行解密。最后拿到真正的内容。

4.代码示例

     https://github.com/1789304191/rsa-test

你可能感兴趣的:(安全)