关于公钥与私钥的一点看法
故事的起源
私密性
之前,用户a想给用户b发消息,a希望他自己发出现的消息,只能被b读懂。也就是说a希望发出去的数据是被加密过的,收到消息的人可以是b,c,d,e等等。但是只有b能被读懂。
这个需求很简单,加密即可。啥意思,如果a这个用户想发送的原始数据是485,然后a给这个458进行加密,怎么加密呢?给每一个数字都加一个"2"。这样一来,发出去的消息就变成了670。然后a再把加密方法(给每一个数字都加一个"2")只告诉b。那之后当b收到670,再逆着进行运算,就能从670得到458。此之谓加密。
完整性
什么意思,a给b发送了一个670(加密后的消息)。但是消息再发送过程中篡改了(有可能是某些人故意的,也有可能是网络各种异常),b收到的消息变成了67或者变成了671。那此时无论b怎么进行逆向解密都不能得到a最初想发送的485这个数据。(这里的关键问题不是b如何修复67变成670,而是b怎么才能知道此刻他收到的67是一份并不准确的残缺信息!)
唯一性
唯一性这个名称不准确。准确的需求就是,b收到了一组消息,但是谁能保证这个消息就真的是a发出的呢?a后面有没有可能说我从来就没有发过消息!!
秘钥的实现思路
通过某个工具生产一组字符串,一个叫私钥,一个叫公钥。
一组公钥私钥的功能就是
公钥和私钥成对出现
公开的密钥叫公钥,只有自己知道的叫私钥
用公钥加密的数据只有对应的私钥可以解密
用私钥加密的数据只有对应的公钥可以解密
如果可以用公钥解密,则必然是对应的私钥加的密
如果可以用私钥解密,则必然是对应的公钥加的密
每个用户都有一组自己的秘钥,一个公钥一个私钥。
还是在a给b发消息的例子里。
首先,a把自己的公钥给b;b也把自己的公钥给a。
- case1 私密性
当a给b发消息的时候,用b给的公钥进行加密。这样等b收到消息后,再有b自己的私钥进行解密。
这样一来,a发出去的消息,即使被c收到了,但是由于c没有b的私钥,也就没法解密(c也就看不懂自己收到的消息了)。这就满足了上面说的私密性。 - case2 完整性
当a给b发消息的时候,再用a自己的私钥对自己要发的信息进行一下完整性校验。等到b收到消息之后,就先用a的公钥进行数据验证,看看数据是不是完整的。这就满足了上面说的完整性。 - case3 唯一性
当a给b发消息的时候,就直接把a的私钥当做一个印章,盖在信息上(然后用b的公钥进行加密)。等到b收到消息后,用b自己的私钥进行解密,之后发现了a的私钥。那就证明了这个消息真的是a发送的。a就不能赖账了。这就满足了上面说的唯一性。
另外你说假如a的私钥被c偷走了,那这怎么办?
那没办法,公钥私钥机制只是从技术层面解决问题,c偷了a的秘钥,这显然已经超脱技术层面了。
应用
- linux服务器的登录
当用户想从服务器a登录服务器b的时候。
先使用工具(例如ssh-keygen)生成一组秘钥对,然后把公钥放到b上,从a上用私钥进行登录。之后如果想从c上登录b,那只用把之前的私钥也给c发一份即可。 - git上上传下载代码
与登录linux服务器一样,把私钥放在允许登录某个账号的机器上,然后把公钥上传到git的账户管理里。
一点问题
- case1
有个问题,直接用用户名密码的方式登录服务器不行么?为什么非得用秘钥机制?
因为大家用的密码大多数情况下都很简单,例如admin,123456等等,很容易被破解。当然如果你说自己使用的密码是三十几位,包括大小写字母,数字,特殊字符那当我没说。 - case2
某些用户说,公钥私钥可以替换使用。
我自己也不能确定上面说法是不是对的。但是建议大家还是按照标准用法:
公钥就是公钥,散播出去;
私钥就是私钥,自己保存好,不要给别人。
参考文档
https://zhuanlan.zhihu.com/p/113522792
相关文章:
关于公钥与私钥的一点看法
故事的起源 私密性 之前,用户a想给用户b发消息,a希望他自己发出现的消息,只能被b读懂。也就是说a希望发出去的数据是被加密过的,收到消息的人可以是b,c,d,e等等。但是只有b能被读懂。 这个需求…...
深入React源码揭开渲染更新流程的面纱
转前端一年半了,平时接触最多的框架就是React。在熟悉了其用法之后,避免不了想深入了解其实现原理,网上相关源码分析的文章挺多的,但是总感觉不如自己阅读理解来得深刻。于是话了几个周末去了解了一下常用的流程。也是通过这篇文章…...
32个关于FPGA的学习网站
语言类学习网站 1、HDLbits 网站地址:https://hdlbits.01xz.net/wiki/Main_Page 在线作答、编译的学习Verilog的网站,题目很多,内容丰富。非常适合初学Verilog的人!!! 2、牛客网 网站地址:http…...
5分钟快速上手Promise使用
promise 是处理异步编程的一种处理方式,可以将异步操作按照同步操作的方式编写。是一个对象或者构造函数,里面存放着某个未来才会执行的结果的方法(一般就是异步操作) 自己身上有all、reject、resolve这几个方法,原型上…...
大客户市场:阿里云、腾讯云、华为云“贴身肉搏”
配图来自Canva可画 近年来,随着中国逐渐进入数字化经济快车道,国内企业数字化、智能化升级已是刻不容缓。而为了帮助自身或其他企业实现数字化转型升级,阿里、腾讯、百度、京东、字节、网易、华为等众多国内知名企业早在多年以前,…...
华为OD机试 - 求字符串中所有整数的最小和(Python)| 真题+思路+代码
求字符串中所有整数的最小和 题目 说明 字符串 s,只包含 a-z A-Z + - ;合法的整数包括 1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102 2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023输入 包含数字的字符串 输出 所有整数的最小和 …...
企业电子招投标采购系统源码之首页设计
功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为…...
浅谈一下前端工作中全流程多层次的四款测试工具
在应届生找工作的时候,我们经常会见到一条招聘要求:要求实习经历。或者 有实习经历者优先。 为什么大部分公司在招聘时,都要求你必须有实习经历? 商业项目与个人项目不同,一段实习经历,能够熟悉公司中成熟…...
【运算放大器】反相放大电路仿真应用
目录 一、反相放大电路原理(简化电路) 二、反相放大电路电路原理(实际特性) 2.1原理图 2.2实际电路 三、虚短 虚断 3.1 虚短 3.2 虚断 四、作业 4.1 (反相)放大电路设计 4.2 LM741芯片 五、标准…...
数组的操作
1.splice 1.splice 是数组的一个方法,使用这个方法会改变原来的数组结构,splice(index ,howmany , itemX);这个方法接受三个参数,我们在使用的时候可根据自己的情况传递一个参数&…...
Python - 文件基础操作
目录 文件的读取 open()打开函数 read类型 read()方法 readlines()方法 readline()方法 for循环读取文件行 close() 关闭文件对象 with open 语法 文件的写入 文件的追加 文件的读取 操作 功能 文件对象 open(file, mode, encoding) 打开文件获得文件对象 文件…...
react的useState源码分析
前言 简单说下为什么React选择函数式组件,主要是class组件比较冗余、生命周期函数写法不友好,骚写法多,functional组件更符合React编程思想等等等。更具体的可以拜读dan大神的blog。其中Function components capture the rendered values这句…...
SharpImpersonation:一款基于令牌和Shellcode注入的用户模拟工具
关于SharpImpersonation SharpImpersonation是一款功能强大的用户模拟工具,该工具基于令牌机制和Shellcode注入技术实现其功能,可以帮助广大研究人员更好地对组织内部的网络环境和系统安全进行分析和测试。 该工具基于 Tokenvator的代码库实现其功能&a…...
华为OD机试 - 最大相连男生数(Python)| 真题+思路+代码
最大相连男生数 题目 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。 这个相连位置在一个直线上,方向可以是水平的、垂直的、成对角线的或者反对角线的。 注:学生个数不会超过 10000。 输入 输入的第一行为矩阵的行数和列数,接下…...
GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化
地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…...
2.13、进程互斥的硬件实现方法
1、中断屏蔽方法 利用 “开/关中断指令” 实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况) 优点:简单…...
Leetcode力扣秋招刷题路-2335
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 2335. 装满杯子需要的最短总时长 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开…...
C语言深度解剖-关键字(6)
目录 1. 浮点型与零的比较: 1.1 推导: 1.2 实践: 总结: 理解强制类型转换: 指针与零比较 switch case 语句: 写在最后: 1. 浮点型与零的比较: 1.1 推导: 例&am…...
[多线程进阶]CAS与Synchronized基本原理
专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1.CAS 1.1 什么是CAS? 1.2 CAS伪代码 1.3 CAS …...
【Linux系统编程】02:文件操作
文件IO 系统调用(不带缓冲的IO操作)库函数(默认带用户缓冲的IO操作) 一、非缓冲IO 系统调用:即为不带缓冲的IO 1.打开文件open 2.读取文件read NAMEread - read from a file descriptorSYNOPSIS#include <unist…...
计算机毕业设计springboot英语学习网站 基于SpringBoot的在线英语教育平台设计与实现 SpringBoot框架下的智能化英语辅助学习系统开发
计算机毕业设计springboot英语学习网站3i8387gp (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。全球化时代对英语能力的需求日益增长,信息技术在教育领域的广泛应用推…...
利用VMware虚拟机在本地模拟星图GPU平台环境测试MogFace-large
利用VMware虚拟机在本地模拟星图GPU平台环境测试MogFace-large 想试试最新的MogFace-large人脸检测模型,但手头没有现成的云GPU服务器?或者想先在本地环境里跑通流程,验证一下效果再上云?今天就来分享一个非常实用的方法…...
从 Prompt Engineering 到 Harness Engineering:AI 系统竞争,正在从“会写提示词”转向“会搭执行框架”
从 Prompt Engineering 到 Harness Engineering:AI 系统竞争,正在从“会写提示词”转向“会搭执行框架” 摘要 过去两年,很多团队把 AI 应用效果的提升寄托在 Prompt Engineering 上:修改 system prompt、叠加 few-shot、重写指令…...
毕业季、返修季、投稿季:SCI论文润色,到底能不能提高接收率?
“SCI论文如果先润色,再投稿,是不是更容易被接收?”这个问题,真的每年到了这个时间点都会高频出现。尤其是3月底到4月初,很多同学刚从基金申请、毕业论文、返修修改的高压节奏里缓过来,马上又进入下一轮“赶…...
8086汇编实战:用ZF、PF、SF标志位调试你的第一个程序(附调试截图)
8086汇编实战:用ZF、PF、SF标志位调试你的第一个程序(附调试截图) 刚接触汇编语言时,很多人会被那些神秘的标志位搞得一头雾水。记得我第一次在调试器里看到ZF、PF、SF这些缩写时,完全不明白它们有什么用——直到我在实…...
【实战指南】Spirent TCL 并发与新建连接测试全流程解析
1. Spirent TCL测试基础与环境搭建 第一次接触Spirent TestCenter时,我也被它强大的功能和复杂的界面吓到过。但实际用下来发现,只要掌握几个核心模块,就能完成大多数性能测试任务。这里先带大家快速搭建测试环境,为后续的并发和新…...
CCS12.3.0保姆级教程:手把手教你为AWR6843AOP毫米波雷达新建工程(附完整配置参数)
CCS12.3.0零基础实战指南:AWR6843AOP毫米波雷达工程搭建全解析 第一次打开Code Composer Studio 12.3.0时,满屏的选项和参数确实容易让人望而生畏。特别是当你要为TI的AWR6843AOP毫米波雷达创建新工程时,那些关于Cortex R、DSP C67XX、mss/ds…...
CST、Sspp与色散曲线的关联
CST cst Sspp 色散曲线在电磁仿真领域摸爬滚打过的工程师,对色散曲线这个磨人的小妖精应该都不陌生。今天咱们就来聊聊怎么用CST Studio Suite里的本征模求解器(Eigenmode Solver)提取波导结构的色散曲线,手把手带你从懵逼到上手…...
CLIP Prompt Tuning实战指南:如何用少量样本优化多模态模型性能
最近在做一个多模态内容理解的项目,用到了CLIP模型。大家都知道CLIP很强大,但真到了要让它适应我们自己的业务数据时,传统全量微调(Full Fine-tuning)那套方法就有点让人头疼了——动辄几十GB的显存需求,还…...
智慧农业篇(一):一套大棚监控系统的架构与实战
2018年一个朋友找到我,想开发 一套完整的农业种植的智能控制监测系统,主要针对的是蔬菜大棚的智能控制;基本思路就是:给出一套让农民“坐在家里种地”的物联网方案。我们当时涉足智慧农业的初心就是:让数据替人跑腿&am…...
