参考: OpenSSL命令行工具验证数字签名

  客户端需要生成一对密钥,服务器需要生成一对密钥,分别记为client_private.pem/client_public.pem和server_private.pem和server_public.pem.

步骤

1. 客户端下载服务器的公钥,server_public.pem;

2. 客户端使用服务器的公钥对数据(data)进行加密;

3. 客户端对数据(data)进行签名计算,再将结果用私有密钥进行加密,得到加密后的摘要签名;

4. 客户端使用加密后的数据和签名结果组合成最终需要传送的数据,传送到服务器。

5. 服务器收到加密数据、数字签名、客户端公钥;

6. 服务器通过自有私钥解密数据,得到明文数据;

7. 服务器通过明文数据计算出数据摘要;

8. 服务器根据客户端的公钥解密客户端的加密数字摘要;

9. 对比计算出来的数据摘要和客户端传送过来的数据摘要,一致,则说明客户端是合法,可以进行下一步数据传输;否则认为不合法,中断连接。

openssl中RSA数字签名的使用的更多相关文章

  1. OPENSSL中RSA私钥文件(PEM格式)解析【一】

    http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...

  2. OpenSSL 中 RSA 加密解密实现源代码分析

    1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且 ...

  3. OpenSSL中的大数接口与基于其的自用RSA加密接口设计

    本文记录了初次接触OpenSSL中的大数模块,重温了RSA加密流程,使用OpenSSL的接口包装成自用RSA加密接口,并且利用自己的接口演示了Alice与Bob通过RSA加密进行通讯的一个示例. 概览 ...

  4. openssl生成RSA密钥证书

    1.openssl的安装 2.RSA密钥证书的生成 3.openssl的常用命令 1.openssl的安装 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套 ...

  5. OPENSSL安装 以及使用openssl中的AES加密和解密

    OPENSSL安装:(VS) 1:第一步和所有的软件安装一样. 2:将OPENSSL中INLUCDE 和 LIB 分别拷贝到VS中VC的INLUCDE 和LIB目录下(我的机器上的目录是:C:\Pro ...

  6. 利用openssl进行RSA加密解密

    openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是 ...

  7. JDK自带方法实现RSA数字签名

    JDK 6只支持MD2withRSA, MD5withRSA, SHA1withRSA 其他的如SHA512withRSA需要第三方包支持,如BC(bouncy castle) --20151126 ...

  8. 利用Openssl进行RSA加密签名算法

    加密(签名)的过程是(M的e次方)mod n,在这里我们把消息M假定为一个数字,但实际上消息一般为字符串,所以必须有一个将字符串转化为数字的规则,并且要让这个数字的大小和n相当(也不能比 n大).这样 ...

  9. Java与openssl的RSA算法

    1.java生成的公私钥格式为 pkcs8(PKCS8EncodedKeySpec), 而openssl默认生成的公私钥格式为 pkcs1 2.java采用的rsa默认补齐方式是pkcs1 (RSA/ ...

随机推荐

  1. centos设置服务开机启动失败问题

    1.安装某服务设置开机启动的时候报错 [root@node1 ~]# systemctl enable lvm2-lvmetad.serviceThe unit files have no [Inst ...

  2. python,栈的小例子

    ''' 1.首先确认栈的概念,先进后出 2.初始化的时候如果给了一个数组那么就要将数组进栈 ''' class Stack: def __init__(self,start=[]): self.sta ...

  3. Linux Shell脚本编程

    ⒈为什么要学习Shell编程 1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理 2)对于JavaEE和Python程序员来说,有些工作需要编写一些Shell脚本进 ...

  4. SSH命令行管理文件

    1.从服务器上下载文件 ssh root@13.111.122.133 2.从服务器上下载文件 scp username@servername:/path/filename /var/www/loca ...

  5. 【转】python 面向对象(进阶篇)

    [转]python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 ...

  6. 【转】python模块导入细节

    [转]python模块导入细节 python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码 ...

  7. mysql死锁-查询锁表进程-分析锁表原因【转】

    查询锁表进程: 1.查询是否锁表 show OPEN TABLES where In_use > 0;   2.查询进程     show processlist   查询到相对应的进程===然 ...

  8. window10 matlabR2015b 安装minGw

    第一步:下载TDM-GCC(注意看清是32位还是64位),TDM-GCC的安装路径不要包括空格: http://tdm-gcc.tdragon.net/download 第二步:点击“我的电脑”右键“ ...

  9. html5 file 上传文件

    <body> <header> <h2>Pure HTML5 file upload</h2> </header> <div clas ...

  10. sumafan:python爬虫多线程爬取数据小练习(附答案)

    抓取 https://www.cnbeta.com/ 首页中新闻内容页网址, 抓取内容例子: https://hot.cnbeta.com/articles/game/825125 将抓取下来的内容页 ...