规范中有很多数学相关的推演和计算,并不打算在这里介绍,主要介绍一下相关的计算流程及最终的签名结果。

算法可以分为:对称算法和非对称算法两大类。对称算法加密和解密都用的是同一个密钥;而非对称算法却是有一对密钥对(公钥和私钥),但是这对公钥加密的东西,能用私钥解开;反之亦然。

RSA就是属于非对称算法,RSA也有一对密钥对用来参与运算。公钥,顾名思义就是可以公开的密钥,其实就是可以拿给大家看的密钥。私钥,当然就是只有自己才能知道的密钥,不可以给人看的,也就是说只有你自己才能知道的。

一开始的时候,总是会分不清楚RSA加解密与签名验签的关系是什么?

应用场景:

加解密,肯定是有什么东西是不想给别人知道的,好比有个宝贝得锁在箱子里,钥匙当然要在自己这里才安全。而RSA里面的私钥呢只有自己可以看见,相当于钥匙了。一把钥匙对应一把锁,这个锁自然就是公钥了。

签名验签呢,就好比目前有一份合同,甲乙双方都按了手印,以示达成协议,不再反悔,所以签名的内容需要是公示给大家看的。但是只有自己亲手按的才能认对吧,那肯定是要用私钥做签名了,因为私钥只有自己才有啊;公钥当然就用来验签了。

计算流程:

加解密:公钥(锁)对明文(宝贝)加密(锁在箱子里);私钥(钥匙)对密文(锁上的箱子)进行解密(打开箱子),就可以得到明文(宝贝)了。

签名验签:私钥(指纹)对明文(合同)进行签名(按手印);公钥(公安局里你的指纹记录)对签名值(按了手印的合同)进行验签(核验手印是否匹配),如果匹配,就是验签通过,就没有办法抵赖了。

计算方法:

从计算流程上可以看出,如果抛开应用场景,而只关注数学运算的话:

加密:公钥 + 明文 ---> 密文

验签:公钥 + 签名 ---> 验签结果

解密:私钥 + 密文 ---> 明文

签名:私钥 + 明文 ---> 签名

所以全部过程,只涉及:公钥运算和私钥运算而已。如果调用openssl的接口,就会发现只有RSA_decrypt和RSA_encrypt两个函数就够了。

PKCS#1规范阅读笔记1--------基本概念的更多相关文章

  1. PKCS#1规范阅读笔记2--------公私钥ASN.1结构

    PKCS#1种介绍了哈希算法的OID等的ASN.1结构,因为使用ASN.1的解码工具(比如:ASN1View)时,会自动显示出各OID的含义,所以这里就不说明了.下面就只简单摘抄一下RSA公私钥的AS ...

  2. 【阅读笔记】rocketmq 概念与架构 (一)

    介绍 rocketmq 框架与基本概念 1. 概念 1.1 namesrv(name server) 记录了 broker 集群信息,消息队列的信息以及 key-value 配置,见 RouteInf ...

  3. 《深入理解Linux网络技术内幕》阅读笔记 --- 路由基本概念

    一.路由的基本概念 1.一条路由就是一组参数,这些参数存储了往一个给定目的地转发流量所需的信息,而一条路由所需的最少的参数集合为:(1)目的网络,(2)出口设备,(3)下一跳网关 2.路由中的相关术语 ...

  4. 《Spring In Action》阅读笔记之核心概念

    DI 依赖注入:在xml中配置的bean之间的依赖关系就是依赖注入 AOP 面向切面编程:如在xml中定义某个方法为切点,然后配置在该切点(该方法)调用前后需要调用的方法,从而简化了代码并解耦. Sp ...

  5. 《Thinking In Java》阅读笔记

    <Thinking In Java>阅读笔记 前四章:对象导论. 一切都是对象. 操作符. 控制执行流程 public在一个文件中只能有一个,可以是一个类class或者一个接口interf ...

  6. 《大象Think in UML》阅读笔记(三)

    Think in UML 阅读笔记(三) 把从现实世界中记录下来的原始需求信息,再换成一种可以知道开发的表达方式.UML通过被称为之概念化的过程来建立适合计算机理解和实现的模型,这个模型被称为分析模型 ...

  7. 《C#程序设计教程 -李春保》阅读笔记

    <C#程序设计教程 -李春保>阅读笔记   ( 需注意程度:红>粗体>下划线,蓝色:我的疑问 )   老师的引言 [师]对待一种新语言的关注点 数据类型定义(python不用定 ...

  8. 《Java多线程编程实战指南(核心篇)》阅读笔记

    <Java多线程编程实战指南(核心篇)>阅读笔记 */--> <Java多线程编程实战指南(核心篇)>阅读笔记 Table of Contents 1. 线程概念 1.1 ...

  9. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

随机推荐

  1. WPF老矣,尚能饭否——且说说WPF今生未来(中):策略

    本文接上文<WPF老矣,尚能饭否——且说说WPF今生未来(上):担心>继续. “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只 ...

  2. .Net语言 APP开发平台——Smobiler学习日志:如何在手机上开发仪表盘控件

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"S ...

  3. 月经贴——.net前景何妨!

    已经从业7年了,除了.net什么也不会.思索.net前景也挺长时间了.很少人有主动改变的动力,边思索边在.net中沉迷.现在反应学.net的人越来越少了,而做企业的人还找不到做.net的.总是感觉现在 ...

  4. 移动端API架构 统一Proxy还是各自为政?

    今天首先回答上一篇的问题: 为什么APP通过运营商接入网络,连通率会那么差? 1. 域名缓存问题 运营商的localdns会缓存域名的解析结果,不向权威DNS递归查询解析 为什么要这么干呢? 1)运营 ...

  5. 解决使用Skia图形库时遇到的几个问题

    Skia是一个开源的2D图形库,提供通用的API,适用于工作中遇到的各种硬件和软件平台.这是谷歌浏览器Chrome OS,Android的图形引擎,Mozilla Firefox浏览器和Firefox ...

  6. nginx concat模块配置 页面返回400 bad request

    在1.4.x版本的nginx没有发现这个问题,但是在1.5.x版本就遇到了这个问题 由于Nginx在新版本中,使用了标准的 MIME-Type:application/javascript.而在ngi ...

  7. kafka-0.10.0官网翻译(一)入门指南

    1.1 IntroductionKafka is a distributed streaming platform. What exactly does that mean?kafka是一个分布式的流 ...

  8. javascript是判断对象是否是数组

    JS中的数据类型: 2大类 原始类型:值保存在变量本地的数据类型 5种:Number String Boolean undefined null Number:8bytes 舍入误差-->四舍五 ...

  9. 软件开发流程 Software development process

    软件开发流程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法.软件的总体结构设计和模块设计.编程和调试.程序联调和测试以 ...

  10. infopath重复表格无法保存输入内容

    现象: infopath重复表格无法保存文本输入内容,可以保存日期控件输入内容 原因: 在重复表中添加格式类型规则导致无法保存.