SSL基础:9:公钥加密 vs 私钥加密

article/2025/9/25 6:51:22

在这里插入图片描述
在前面的文章中讲述过使用公钥加密、私钥解密的使用示例,同时也介绍过使用私钥对文件进行签名,使用公钥进行验证的示例。这篇文章继续来讨论一下应该是公钥加密还是私钥加密的问题。

公钥和私钥相关的基础常识

首先关于公钥、私钥又如下基本常识:

  • 公钥:可发放给多个持有人,是被公开的钥匙
  • 私钥:必须严格管理,一般只有一个持有人,是不能被公开的钥匙
  • 长度:长度越长,安全性越高,速度越慢
  • 关系:公钥数据是包含在私钥之中的,可以根据私钥可以生成公钥
  • 加密解密:公钥和私钥都可以用于加密、解密操作

实际使用场景

私钥加密、公钥解密

虽然公钥和私钥都可以用于加密和解密,但是实际上公钥加密、私钥解密还是私钥加密、公钥解密这实际上并不是一个问题。因为公钥是被公开的,使用私钥进行加密,公钥进行解密,在传输的过程中谁都可以获取到这个信息并对其使用公钥进行解密,所以这不是加密和解密的场景,因为这个过程注定无法保密,这个过程是用于验证发送者的身份的,因为在网络上的信息是可以被获取和篡改的,如果私钥只有一人拥有,使用私钥进行加密,获取到这个加密后的数据之后,拿着公钥进行解密,如果能够解开,说明了发送者的身份就是私钥的拥有者,而这种身份的证明和不可抵赖性则是这个使用中最为重要的关注点,而传输的内容则不是关注的内容。
所以私钥加密、公钥解密这种情况更多的则是这样一种表述:私钥的拥有者使用私钥进行签名,而公钥的拥有者使用公钥对此签名进行验证,从而确认发送者的身份。其实从数据的流向也很清楚,从私钥的拥有者流向众多公钥的拥有者,主要是向拥有者进行身份的证明,安全性相关的数据的传输使用这种方式注定是得不到保障的。

公钥加密、私钥解密

数据的流向相较于前面一种场景是相反的,公钥加密的数据,传输之后,收到数据的接收者使用私钥进行解密,由于私钥的持有人是严格管理的,所以正常情况下,一般人即使获取到使用公钥加密的数据也无法解开,所以数据的安全性是可以得到保障的。这也是非对称密钥算法最为常见的使用场景。

使用示例

公钥加密、私钥解密

在前面的文章中已经通过具体的示例介绍过这种方式,使用rsautil提供的加密和解密的选项很清晰地描述的这个过程,详细可参看:
*

私钥签名、公钥验签

相较于私钥加密、公钥解密的说法,在实际的场景中,使用私钥的拥有者私钥进行签名、获取签名文件的公钥的拥有者对签名文件进行验证,以确认发送者身份和内容的完整性则是更符合常识上理解的说法。结合dgst命令,如下的文章介绍了这一过程:

  • https://liumiaocn.blog.csdn.net/article/details/103457878

而rsautil也提供了类似的选项,而且选项的名称也直接是sign和verify,示例使用说明如下所示:

  • sign: 私钥拥有者使用私钥对输入文件生成签名文件
  • verify:公钥拥有者使用公钥对签名文件进行验证,获取sing之前的输入文件

事前准备

准备如下文件,准备方法参看:https://liumiaocn.blog.csdn.net/article/details/103457878

[root@liumiaocn rsa]# ls -lrt
total 20
-rw-r--r--. 1 root root  37 Dec  9 06:51 messages
-rw-------. 1 root root 887 Dec  9 06:52 rsa_key.private
-rw-r--r--. 1 root root 272 Dec  9 06:52 rsa_key.public
-rw-r--r--. 1 root root 128 Dec  9 06:58 enc_messages
-rw-r--r--. 1 root root  37 Dec  9 06:59 dec_messages
[root@liumiaocn rsa]#

本示例使用到的文件说明:

  • messages:加密对象文件,保存hello的信息
  • rsa_key.private: 私钥
  • rsa_key.public:公钥

使用进行私钥签名

使用私钥进行签名:

[root@liumiaocn rsa]# openssl rsautl -sign -in messages -out messages.sign -inkey rsa_key.private 
[root@liumiaocn rsa]# ls -l messages.sign 
-rw-r--r--. 1 root root 128 Dec  9 07:39 messages.sign
[root@liumiaocn rsa]#

使用公钥对签名进行验证

[root@liumiaocn rsa]# openssl rsautl -verify -in messages.sign -pubin -inkey rsa_key.public 
Hello, this is greeting from liumiao
[root@liumiaocn rsa]# openssl rsautl -verify -in messages.sign -pubin -inkey rsa_key.public -out verify_messages
[root@liumiaocn rsa]# cat verify_messages 
Hello, this is greeting from liumiao
[root@liumiaocn rsa]# 

http://chatgpt.dhexx.cn/article/TlL6qdIc.shtml

相关文章

使用RSA实现前端公钥加密后端私钥解密

听说你还不会RSA算法实现前端加密后端解密???那就来看这里… RSA前端加密后端解密避免出现明文密码传递 话不多说,直接开撸 前端JS 项目中先添加rsa.js文件 链接:https://pan.baidu.com/s/1r9930MkS4n8TR9IsOIXV-Q 提取码&…

公钥加密应用--数字签名

公钥加密应用–数字签名 文章目录 公钥加密应用--数字签名概述私钥加密HASH算法签名算法的使用流程签名算法的应用认证身份完整性不可抵赖性 撤销签名密钥签名算法DSA算法ECDSA算法ECDSA--SM2签名算法 Reference 概述 ​ 本文主要带大家详细了解数字签名的一些知识&#xff0c…

公钥加密

公钥密码又称为非对称密码,拥有公钥密码的用户分别拥有加密密钥和解密密钥。通过加密密钥不能得到解密密钥。并且加密密钥是公开的。 什么是密钥配送问题 在现实世界中使用对称密码时,我们一定会遇到密钥配送问题( key distribution problem)。 假如 …

SM2公钥加密与解密

SM2加解密 字符串公钥SM2加解密工具类 始于我工作中的一个需求,在网上很少找到资料所以来写一下 字符串公钥 公钥是对接方给的,是一个长字符串类似于这种格式 工具类中也有生成公私钥的方法,我测试加解密也能成功 秘钥生成借鉴的是这个文章…

公钥加密算法-RSA

RSA算法 RSA算法是由它的三位开发者,即 Ron Rivest、Adi Shamir 和 Leonard Adleman 的姓氏的首字母组成的 (Rivest-Shamir-Adleman)。 RSA 可以被用于公钥加密、数字签名和密钥交换。 文章目录 RSA算法一、简介二、RSA算法流程1、 加密或者验签过程2、解密或者签名…

公钥加密与PKI实验

环境:安装openssl库和bless工具 1.openssl库 2.bless工具 一.成为数字证书认证机构 1.新建一个工作目录 2.为CA生成自签名证书 二.为PKILabServer.com生成证书 1.生成公开/私有密钥对 2.生成证书签名请求 3.生成证书 三.在网站中…

java公钥加密私钥解密_公钥加密,私钥解密示例程序(JAVA)详解

公钥与私钥机制属于非对称加密的范畴,非对称是相对于对称加密而言的,对称加密用于加密与解密的密钥是同一把,而非对称加密则用于加密与解密的密钥不相同,一个公开,称为公钥;一个保密,称为私钥&a…

c#加密:四、公钥加密和签名

一、公钥加密 1、概述 公钥加密是非对称的,因此加密和解密需要使用不同的密钥。对称加密的密钥可以是一串长度合适的任意字节串。但非对称加密则需要专门制作一对密钥。 这个密钥对包含一个公钥和一个私钥。它们将一起完成如下工作: 公钥加密消息&#…

为什么用公钥加密却不能用公钥解密?

本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 一直以来我都在逃避写HTTPS。 毕竟。 HTTPS里名词太多。概念又巨繁琐。 实在是太难解释了,能不写我尽量不写。。。。 但为了让图解网…

公钥加密算法

3 公钥加密算法 加密工具使用 运行RSA-Tool,点击Start按钮,滑动鼠标生成一个随机数。点击Generate生成一对大质数p、q及Npq。 自己选定一个可用的整数e(可使用默认的10001,也可以使用其他的)。点击Calc.D生成d。 3 将公钥(N,e)发送给小伙…

2021-05-05

5.5 实训主题:密码学(后续) 公钥加密算法 RSA算法的数学原理 阅读RSA.cpp中的代码,了解其实现方法。调试运行RSA.cpp,选择两个不同的素数。根据生成的d和e验证公式de ≡ 1 (mod (p-1)(q-1))。输入要加密的数。验证…

公钥密钥加密原理

转载自:https://www.jianshu.com/p/0bf1c3c047e5 第6章 网络编程与网络框架 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。对称加密算法:加密和解密都是使用的同…

公钥密码体制及RSA公钥加密算法(上)

一.公钥密码体制 (1)公钥(非对称)密码概述: 优点:免去密钥分发,密钥管理简单 (2)公钥加密的设计原则: 已知公私钥,进行加密解密是简单容易的 单…

网关与路由器的区别!!

自我认识: “网关” :让两个不同网络相互之间进行通信,可以使具有不同协议的网络相互连接。 “路由器”:能在计算机网络之间发送和接收数据包的设备,并且提供最佳路由路径的一种网络互联设备。但是只能在使用相同协议…

什么是网关和网关的作用

什么是网关? 网关(Gateway)指的是这一个网络连接到另一个网络的“关口”,它又称网间连接器、协议转换器。在Internet网里,网关的作用是一种连接内部网与Internet上其它网的一种中间设备,通俗来说,也叫做“路由器”。网关地址是能…

微服务——API网关

什么是API网关 API网关(API Gateway)是应用服务之前的系统,用来代理业务系统的服务API,在网关层处理所有的非业务功能,实现管理授权、访问控制和流量限制等功能。这样业务系统就可以专注于业务,而不用去处…

网关和路由器的区别

摘要:网关是逻辑概念,路由器是物理设备,路由器可以作为网关来使用。路由器是一个设备,而网关是一个结点(概念层)。应该说:路由器可以实现网关的功能。另外,网关的功能还可以由局域网中一台双网卡的机器&…

PowerBI Server端管理数据网关

作为企业PowerBI的管理员,日常工作除了分发报表,可能就是管理网关了,目前国际版的Server端已经更新了网关管理的页面,但是入口没变,仍然是设置—管理网关。 新建数据源 进入管理网关页面后,左上角有一个新…

守护企业网关

相比UTM、防毒墙等概念,用户关注的只是网关处如何确保网络安全以及对病毒攻击的拦截。 有一天,在一家大型外企工作的小王,利用午休空挡通过MSN将一个名为Dancing Skeleton的游戏小程序传给朋友分享,当消息发过去后,屏…

网关介绍

网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用…