SSH加密密码中的非对称式密码学

转 wiki

https://zh.wikipedia.org/zh-cn/公开密钥加密

公开密钥密码学

(英语:Public-key cryptography),也称为非对称式密码学(英语:asymmetric cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。

加密

非对称加密往往需要密码学安全伪随机数生成器的协助来产生一对密钥,其中一个可以随便公开,称为公钥;另一个不公开,称为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供。
如果任何人使用公钥加密明文,得到的密文可以透过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;其他人即使从网络上窃取到密文及加密公钥,也无法(在数以年计的合理时间内)解密得出明文。典型例子是在网络银行或购物网站上,因为客户需要输入敏感消息,浏览器连接时使用网站服务器提供的公钥加密并上传数据,可保证只有信任的网站服务器才能解密得知消息,不必担心敏感个人信息因为在网络上传送而被窃取。

在现实世界上可作比拟的例子是,一个传统保管箱,开门和关门都是使用同一条钥匙,这是对称加密;而一个公开的邮箱,投递口是任何人都可以寄信进去的,这可视为公钥;而只有信箱主人拥有钥匙可以打开信箱,这就视为私钥。

加密过程

在非对称加密中,爱丽丝使用鲍伯的公钥加密明文,得到密文,而只有鲍伯因为持有私钥才可以解密,得到明文。
在数学上,让我们使用典型的爱丽丝与鲍伯假设来解释:
https://zh.wikipedia.org/zh-cn/公开密钥加密

与对称密码学的比较

对称密钥加密牵涉到密钥管理的问题,尤其是密钥交换,它需要作者和读者在通信之前先透过另一个安全的渠道交换共享的密钥,才可以安全地把密文透过不安全的渠道发送;对称密钥一旦被窃,其所作的加密将即时失效;而在互联网,如果通信双方分隔异地而素未谋面,则对称加密事先所需要的“安全渠道”变得不可行;非对称加密则容许加密公钥随便散布,解密的私钥不发往任何用户,只在单方保管;如此,即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,极为适合在互联网上使用。

另一方面,公钥解密的特性可以形成数字签名,使数据和文件受到保护并可信赖;如果公钥透过数字证书认证机构签授成为电子证书,更可作为数字身份的认证,这都是对称密钥加密无法实现的。

不过,公钥加密在在计算上相当复杂,性能欠佳、远远不比对称加密;因此,在一般实际情况下,往往通过公钥加密来随机创建临时的对称秘钥,亦即对话键,然后才通过对称加密来传输大量、主体的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 学习笔记 多表查询02

把一张表 想象成两张表,进行多表查询 举例: 查询 所有员工的 姓名 以及 其 上级姓名 select s1.stname, s2.stname from staff as s1, staff as s2 where s1.stmgr s2.stid;查询 员工李岩的 上级姓名 select s1.stname, s2.stname from staff as s1…

Mac Redis安装入门教程

redis安装(mac) brew install redis 如果需要后台运行 redis 服务,使用命令 brew services start redis 如果不需要后台服务,则使用命令 redis-server /usr/local/etc/redis.conf 启动redis服务 执行以下命令 /usr/local/bin…

Shell 脚本基础学习

查询手册 菜鸟教程 for循环和seq的使用 echo "method 1" for i in seq 1 10; doecho $i; doneecho "method 2" for i in {1..10} doecho $i; doneecho "method 3" for i in seq 1 2 10; doecho $i; done进入目录创建文件重定向内容 cd Test …

mysql 学习笔记15 子查询

子查询定义&#xff1a; 单上子查询举例&#xff1a; 显示与 员工 关平 同一部门的员工&#xff0c; 但不包括关平 select * from staff where staff.stdepno (select staff.stdepno from staff where stname关平) and staff.stname<> 关平 ;多行子查询举例&#xff…

shell自学笔记

文章目录重定向数值比较逻辑操作符使用范围关于文件判断测试表达式test [] [[]] (())的区别sed教程AWK教程重定向 0表示标准输入 1表示标准输出 2表示标准错误输出 默认为标准输出重定向&#xff0c;与 1> 相同 2>&1 意思是把 标准错误输出 重定向到 标准输出. &…

ffmpeg简单使用小记

1. 使用ffmpeg 进行普通切片&#xff08;ts&#xff09;操作 .\ffmpeg.exe -i a.mp4 -y -f hls -c copy -hls_time 10 .\s.m3u82. 使用ffmpeg 对视频进行设置旋转参数为0 .\ffmpeg.exe -i a.mp4 -metadata:s:v:0 rotate0 -c copy outputfile.mp43. 使用文件对视频进行加密 .\…

python3安装教程配置配置阿里云

配置全新阿里云 Linux iz2ze0ajic0vbvwnjhw2bwz 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 安装依赖包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc1.tar.xz 新建一个文件夹存放python3 mkdir /u…

python 使用requests模块进行 视频文件的下载

公司项目需要下载一批视频文件&#xff0c; 格式是mp4和mkv的&#xff0c;就借助request模块进行了下载&#xff0c;前提是源服务器返回文件的大小&#xff0c;以及可以接受 请求头headers中带有Range参数 以下是下载逻辑&#xff1a; resp requests.head(urlreal_video_url)…

Git的多人协作和分支处理测试

首先配置ssh密钥 克隆项目 配置两台主机&#xff08;一台本地mac&#xff0c;一台云服务器&#xff09;通过这样的方式模拟多人开发。 创建分支 [root ~/Git_test_多人协作和冲突合并/branch_test]$ ls README.md [root ~/Git_test_多人协作和冲突合并/branch_test]$ git b…

python 碎片整理 threading模块小计

threading模块中&#xff0c; start()与run()方法的区别 threading.start() 方法是开启一个线程 threading.run() 方法则是普通的函数调用

git教程目录

git入门教程 PyCharm和git安装教程 Git的多人协作和分支处理测试

msyql 禁止远程访问

1. use mysql 2. select host , user from user; 查看用户 与 对应的host 3. 将 host 中是 %的改为 localhost&#xff0c; 酌情也可以其他用户 的host限制为localhost update user set host "localhost" where user "root" and host "%" 4. …

mysql索引回表

先索引扫描&#xff0c;再通过ID去取索引中未能提供的数据&#xff0c;即为回表。 建表 mysql> create table T( id int primary key, k int not null, name varchar(16), index (k))engineInnoDB;如果语句是 select * from T where ID500&#xff0c;即主键查询方式&am…

C++ 执行cmd命令 并获取输出

这是参考别人的 &#xff0c;具体来源忘了&#xff0c;唉&#xff0c;等想起来一定补上出处 头文件 PipeCmd.h #ifndef _PIPE_CMD_H_ #define _PIPE_CMD_H_#include <Windows.h>// 执行 cmd 命令, 并获取执行结果数据 BOOL PipeCmd(char *pszCmd, char *pszResultBuffe…

iterm2 保存阿里云登陆并防止断开连接

commando edit profiles新增一个页面 添加命令 ssh -A -p 22 -o ServerAliveInterval60 rootIP

QString中包含中文的时候, 转为char *

转载自 https://blog.csdn.net/mihang2/article/details/39026865 QString中包含中文的时候&#xff0c; 转为char * void FileEncWidget::QString2ANSI(QString text, char **pOut) {std::wstring wIn text.toStdWString();char *pcstr (char *)malloc(sizeof(char)*(2 * w…

brew安装

官网&#xff1a;http://brew.sh/ 安装软件&#xff1a;brew install 软件名&#xff0c;例&#xff1a;brew install wget搜索软件&#xff1a;brew search 软件名&#xff0c;例&#xff1a;brew search wget卸载软件&#xff1a;brew uninstall 软件名&#xff0c;例&#…

关于异步IO模型的学习

看到两篇不错的文章&#xff0c;转载了&#xff1a; https://www.cnblogs.com/fanzhidongyzby/p/4098546.html https://www.cnblogs.com/aspirant/p/9166944.html

centos 无法连接网络

最小化安装&#xff0c;没有ifconfig默认没法联网 cd /etc/sysconfig/network-scripts/ sudo vi ifcfg-en33 也有可能是其他后缀 找到ONBOOTno service network restart 然后yum install net-tools

C++实现utf8和gbk编码字符串互相转换

不同系统或者服务器之间消息传递经常遇到编码转换问题&#xff0c;这里用C实现了一个轻量的gbk和utf8互相转换&#xff0c;可跨平台使用。&#xff08;重量级的可以用libiconv库&#xff09; 在windows下用<windows.h>头文件里的函数进行多字节和宽字符转换&#xff0c;…