RSA 非对称加密 数字签名 数字证书

简介:

什么是RSA加密算法

RSA加密算法是一种非对称加密算法,算法的数学基础是极大数分解难题。

RSA加密算法的强度也就是极大数分解的难度,目前700多位(二进制)的数字已经可以破解,1024位认为是比较安全的,2048则是非常安全的。

在RSA加密算法中,密钥由两部分组成,称之为公钥和私钥,私有由发送方自己保存,不能泄漏。公钥由发送方公布出去。发送方发送消息时,会用公钥对消息进行加码,接收方必须要使用对应的私钥才能将加密后的信息解开。因此,只要私钥不泄漏,通信内容就不会被破解。

如何保证消息不会被篡改

虽然使用RSA加密之后,只有持有密钥才可以解密,但是这并不能组织或者发现消息被篡改了。为了防止消息在传输过程中被篡改,引入类数字签名的概念。

数字签名

发送方在发送消息之前,会使用消息摘要算法对发送内容进行摘要,然后用私钥对摘要进行加密,加密后的内容作为数字签名随消息一起发送。接收方收到消息之后,会对消息进行解密,解密之后进行摘要计算,得到摘要。接着对数字签名进行解密,得到另一分摘要,将两份摘要进行对比,如果相同,则说明消息没有被篡改过。

数字证书

虽然RSA算法能保证消息不被破解,数字签名也能保证消息不被篡改,但是RSA算法中使用的公钥却很难有效的分发,因为公钥无法证明自己就是由发送方发出的,它也有可能是恶意的人冒名顶替分发出来的。

为了解决这种问题,需要引入第三方权威机构,发送方和接收方都应该要信任该机构,然后由该机构来给他们办法一个证书,证书包含有颁发机构信息,证书持有人信息,以及证书持有人的公钥,这些信息会使用私钥进行数字签名,这样就能够保证证书的安全。接收方收到这个证书,只要使用第三方权威机构的公钥对证书解密,即可知道证书的真伪。

本文转自d1net(转载)

目录
相关文章
|
数据安全/隐私保护
|
数据安全/隐私保护
RSA对称加密
RSA对称加密
|
安全 数据安全/隐私保护 C++
加密/解密 公钥/私钥
加密/解密 公钥/私钥
458 0
加密/解密 公钥/私钥
|
算法 数据安全/隐私保护
|
安全 算法 数据安全/隐私保护
|
JSON 移动开发 Java
RSA 非对称加密【转】
演示代码:https://pan.baidu.com/s/10rfSUUDEEHvCDEYH0oEVCw   Base64工具类,可以让rsa编码的乱码变成一串字符序列 1 package com.
1361 0
|
数据安全/隐私保护 安全
公钥和私钥
 这些密码学的概念容易被搞混淆,的确也情有可原。因为公钥、私钥、加密、认证这些都是较为复杂的问题,其概念不太容易理解,理解不透就容易产生各种似是而非的概念,为了让大家对于密码学有进一步的了解,这里我就详细解说一下公钥和私钥的具体作用和使用方法。
1837 0
|
算法 数据安全/隐私保护 编解码
RSA非对称加密
import javax.crypto.Cipher; import java.io.InputStream; import java.security.*; import java.security.
1130 0
|
算法 数据安全/隐私保护 安全