当前位置: 首页 > news >正文

公钥和私钥

公钥和私钥

公钥和私钥是非对称加密(也称为公钥加密)中使用的一对密钥,它们在数据加密和数字签名等方面发挥着关键作用。简单来说,公钥的公开的,谁都能拿到;而私钥是绝对保密的,一般不允许别人知道。但这么说又显的太简单了,公钥和私钥的详细区别如下:

  • 公钥(Public Key):公钥是用来加密的。当某人想要给你发送消息,而又不想让别人知道时,一般会用你的公钥对其信息进行加密,这样只有拥有对应私钥的你才能解密并阅读其中的加密信息。公钥还能用于验证数字签名。如果你想让别人确定这条信息是你发送的,那么可以用你自己的私钥对信息进行签名,别人可以用你的公钥对其验证,如果验证成功,那么就能确定这是你发送的消息。
  • 私钥(Private Key):私钥是用来解密信息的。当别人用你的公钥对信息进行加密时,只有你能够对其解密,因为私钥是唯一的。此外,私钥还能用于数字签名,当使用私钥对一份信息进行签名时,其实是对这份信息的特定表示形式(如信息的哈希值)进行加密,这样接收者就可以使用公钥进行验证签名的有效性。
    简单来说,公钥能对数据加密并验证数字签名;私钥能解密信息并创建数字签名。

加密解密

如果有人想要给你发送加密消息,那么他该怎么做呢?

  • 首先,他需要拿到你的公钥,因为公钥是公开的,所以他很容易可以拿到
  • 然后使用公钥对信息进行加密,得到加密后的密文
  • 然后把密文发送给你
  • 你再使用私钥对其解密,得到原文
    因为私钥只有你自己才有,所有只有你才能够解密这段信息,所以务必保管好自己的私钥。

数字签名

当你收到这份消息的时候,如何判定就是他发送的呢?因为公钥是公开的,任何人都能拿到并加密信息发送给你。这个时候就需要用到数字签名了。

哈希函数

数字签名通常开始于哈希函数,例如MD5,SHA、RIPEMD-160等。哈希函数的特点是能够将任何大小的数据转换为固定长度(如32/64位)的字符串,这个字符串被称为哈希值或摘要。哈希函数的另一个特定是,无论原文发送再微小的改动都能生成一个完全不同的哈希值。

数字签名过程

一般来说,数字签名有以下几个步骤:

  1. 创建签名:对原文使用哈希函数进行哈希处理,得到哈希值;
  2. 加密:使用私钥对哈希值进行加密,生成的结果就是数字签名;
  3. 附加签名:将生成的数据签名附加到原始数据上,随着原文一起发生出去;
  4. 验证签名:接收方使用发送方的公钥对数字签名进行验证,并得到一个哈希值。如果能验证成功,则证明是发送方发送的消息;
  5. 验证消息:接着接收方也会对信息进行相同的哈希处理,如果得到的哈希值一致,则证明消息没有被篡改。

证书颁发机构(CA)

上一段讲了如何确定消息是发送方发送的,我们要使用到公钥对数字签名进行验证,那么我们如何确定我们获得的公钥就是对方的公钥呢?毕竟公钥很容易获得。
这个时候就要引入证书颁发机构了,证书颁发机构(Certificate Authority,简称CA)可以理解为网络安全中的"身份验证中心",类似与网络中的护照官。它的主要任务是为数字通信中的参与者(比如网站、应用程序等)提供数字证书,以确保其身份的真实性、数据传输的保密性和完整性。
证书颁发机构工作原理如下:

  1. 身份验证:当你想要获取一个数字证书时,你需要向CA申请。CA会通过一系列验证流程来确认你的身份。
  2. 证书生成:一旦身份得到验证,CA会创建一个数字证书,这个证书包含了你的公钥和一些身份信息,如你的名字、公司名或网站地址。
  3. 证书签名:为了让别人能够信任这个证书,CA会用自己的私钥对这个证书进行签名。
  4. 证书分发:你获得的数字证书安装在你的服务器或网站上。当用户访问你的网站时,他们的浏览器会检查这个证书。浏览器已经内置了信任的CA列表,所以它能够验证CA的签名。
  5. 安全通信:如果证书验证通过,用户的浏览器会相信你的网站是安全的,然后用户会使用网站的公钥对信息进行加密,然后安全的发送到服务器。只有服务器自己的私钥才能解密这些信息。

加密算法

一般来说,目前有两种通用加密算法,对称加密和非对称加密。

对称加密

对称加密,又称为私钥加密。是指加密和解密都使用相同秘钥的加密方法。这种加密方式效率较高,因为算法相对简单,计算速度快,适合大量数据的加密。

非对称加密

非对称加密,就是上面介绍的公钥加密,私钥解密的方式。加密算法复杂,速度较慢,只适合传输重要的数据。

但有时候我们会有传输大量重要数据的时候,这个时候不管是对称加密和非对称加密好像都不太行,要么安全性不高,要么效率太慢。最好是使用安全的对称加密,也就是使用安全的方法把一个密钥传输给对方,这样就能比较安全的使用对称加密了。

HTTPS

以上的办法,其实也需要用到CA颁发的证书。作用流程如下:

  1. 建立连接:当你在网站上输入一个使用HTTPS的网址时,客户端会向服务器发起一个连接请求。
  2. 返回数字证书:服务器收到请求后,会返回CA颁发的数字证书,其中包含公钥等信息。
  3. 证书验证:客户端会验证证书的合法性,包括检查证书颁发机构、有效期等,确认服务器的身份没问题后,获取服务器的公钥。
  4. 发送对称密钥:客户端会生成对称加密所需的对称密钥(session key),然后用服务器的公钥加密,发送给服务器。
  5. 解密信息:服务器收到加密的对称密钥后,会用自己的私钥来解密,这样服务器就获得了对称密钥。
  6. 建立安全通道:一旦服务器获得对称密钥后,客户端和服务器之间的“安全通道”就建立起来了,之后的所有通信都会 通过这个通道进行对称加密传输,保证传输过程的安全性。
    HTTPS通过使用非对称加密来传递对称加密所需的对称密钥,一旦服务器拿到对称密钥之后,接下来的所有通信都会使用对称加密传输,确保了网站和用户之间的信息传输是加密的、安全的。这样,即使信息在传输中被截获,黑客也无法阅读这些信息,因为他们没有用来解密的秘钥。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 请你谈谈:vue的渲染机制(render)- 2举例说明问题
  • Kafka使用案例
  • 测量温湿度通过蓝牙和串口发送数据显示在LCD1602屏上
  • 紫辉创投开启Destiny of Gods首轮投资,伯乐与千里马的故事仍在继续
  • 2024杭电多校01——1003树
  • SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移
  • JLink烧录失败
  • 免费发送邮件两种接口方式:SMTP和邮件API
  • “链动+消费增值:用户留存复购新引擎“
  • CSS3 scale 适配
  • zeppline 连接flink 1.17报错
  • WordPress 后台开发技巧:向文章发布页右侧添加自定义菜单项
  • react中的useState和Hook、副作用
  • 小白也能轻松学的计算机网络零基础入门(附学习路线 + 计算机网络教程)
  • CSS实现图片边框酷炫效果
  • Angular数据绑定机制
  • ES6简单总结(搭配简单的讲解和小案例)
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Magento 1.x 中文订单打印乱码
  • nodejs:开发并发布一个nodejs包
  • Spring Boot快速入门(一):Hello Spring Boot
  • Theano - 导数
  • 搭建gitbook 和 访问权限认证
  • 好的网址,关于.net 4.0 ,vs 2010
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 手写一个CommonJS打包工具(一)
  • 项目实战-Api的解决方案
  • 学习Vue.js的五个小例子
  • - 转 Ext2.0 form使用实例
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ionic异常记录
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 阿里云移动端播放器高级功能介绍
  • #define用法
  • #ifdef 的技巧用法
  • #Linux(帮助手册)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)fgets与fputs函数详解
  • (libusb) usb口自动刷新
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Note)C++中的继承方式
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (Python) SOAP Web Service (HTTP POST)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (笔试题)分解质因式
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (译) 函数式 JS #1:简介
  • (转)jQuery 基础
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NetCore发布到IIS
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)