RSA 非对称加密 数字签名 数字证书
什么是RSA加密算法
RSA加密算法是一种非对称加密算法,算法的数学基础是极大数分解难题。
RSA加密算法的强度也就是极大数分解的难度,目前700多位(二进制)的数字已经可以破解,1024位认为是比较安全的,2048则是非常安全的。
在RSA加密算法中,密钥由两部分组成,称之为公钥和私钥,私有由发送方自己保存,不能泄漏。公钥由发送方公布出去。发送方发送消息时,会用公钥对消息进行加码,接收方必须要使用对应的私钥才能将加密后的信息解开。因此,只要私钥不泄漏,通信内容就不会被破解。
如何保证消息不会被篡改
虽然使用RSA加密之后,只有持有密钥才可以解密,但是这并不能组织或者发现消息被篡改了。为了防止消息在传输过程中被篡改,引入类数字签名的概念。
数字签名
发送方在发送消息之前,会使用消息摘要算法对发送内容进行摘要,然后用私钥对摘要进行加密,加密后的内容作为数字签名随消息一起发送。接收方收到消息之后,会对消息进行解密,解密之后进行摘要计算,得到摘要。接着对数字签名进行解密,得到另一分摘要,将两份摘要进行对比,如果相同,则说明消息没有被篡改过。
数字证书
虽然RSA算法能保证消息不被破解,数字签名也能保证消息不被篡改,但是RSA算法中使用的公钥却很难有效的分发,因为公钥无法证明自己就是由发送方发出的,它也有可能是恶意的人冒名顶替分发出来的。
为了解决这种问题,需要引入第三方权威机构,发送方和接收方都应该要信任该机构,然后由该机构来给他们办法一个证书,证书包含有颁发机构信息,证书持有人信息,以及证书持有人的公钥,这些信息会使用私钥进行数字签名,这样就能够保证证书的安全。接收方收到这个证书,只要使用第三方权威机构的公钥对证书解密,即可知道证书的真伪。
RSA 非对称加密 数字签名 数字证书的更多相关文章
- https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名
声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...
- RAS非对称加密与数字证书数字签名
它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么. 我对这些问题的 ...
- [区块链|非对称加密] 对数字证书(CA认证)原理的回顾
摘要:文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的 ...
- HTTPS加密那点事-对称、非对称加密、数字证书
转自:[漫画]https 加密那点事 首先,HTTP协议的缺点:没有对数据进行加密,都是明文传输的.如果要改进这种明文传输的协议,该如何做呢? 对称加密: 在每次发送真实数据之前,服务器先生成一把密钥 ...
- 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)
转自http://blog.csdn.net/bluishglc/article/details/7585965 对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统 ...
- Atitit RSA非对称加密原理与解决方案
Atitit RSA非对称加密原理与解决方案 1.1. 一.一点历史 1 1.2. 八.加密和解密 2 1.3. 二.基于RSA的消息传递机制 3 1.4. 基于rsa的授权验证机器码 4 1.5. ...
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
(以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 voi ...
- RSA非对称加密Java实现
原文 加密基础方法类 import java.security.MessageDigest; import sun.misc.BASE64Decoder; import sun.misc.BASE64 ...
- php RSA非对称加密 的实现
基本概念 加密的意义 加密的意义在于数据的传输过程中,即使被第三方获取到传输的数据,第三方也不能获取到数据的具体含义. 加密方式分为对称加密和非对称加密 什么是对称加密? 对称加密只使用一个秘钥,加密 ...
随机推荐
- 安卓开发入门之activity
安卓开发主要用到的是java语言,对于一个activity,自己写的程序可以继承至Activity,该Activity先会运行一个叫 onCreat()的类,可以在其中申明一些初始化的函数等,这个函数 ...
- StartCoroutine/StopCoroutineInvoke
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/Unity_Coroutine.html using UnityEngine; us ...
- POJ 2411.Mondriaan's Dream 解题报告
题意: 给出n*m (1≤n.m≤11)的方格棋盘,用1*2的长方形骨牌不重叠地覆盖这个棋盘,求覆盖满的方案数. Solution: 位运算+状态压缩+dp ...
- CentOS6.5安装LAMP环境的前期准备
首先需要按照前一篇<CentOS 6.5下安装MySql 5.7>的安装步骤配置好防火墙.关闭 SELINUX 1.编译安装libxml2注:libxml2是一个xml的c语言版的解析器, ...
- gdb调试memcached
1.memcached安装前,要安装libevent 2.memcached在configure中 加上 CPPFLAGS='-ggdb3'选项 例如 本机 ./configure -prefix ...
- mongoDB之用户及权限设置
之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...
- MVC视图中Html.DropDownList()辅助方法的使用
我们先在控制器中准备好一个SelectList类型,然后通过ViewBag.List传入视图中.SelectList类型是ASP.NET MVC专门为列表有关的HTML辅助方法提供选项的,例如,Htm ...
- IOS 性能优化的建议和技巧
IOS 性能优化的建议和技巧 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelo ...
- C语言学习笔记--结构体
结构体定义三种方式: #include<stdio.h> //第一种定义方法 struct point { int x; int y; }; struct point p1,p2; //第 ...
- 【HDOJ】1314 Numerically Speaking
学了几天的Java了,终于独立A了一道大数计算.感觉还得练Java啊. import java.util.Scanner; import java.math.BigInteger; import ja ...