历史中的密码

news2025/1/23 7:09:02

角色

在这里插入图片描述

发送者、接收者和窃听者

  1. 当某个人向另一个人发送信息时,发出信息的人称为发送者,而收到信息的人称为接收者,被发送的信息有时也统称为消息( message )。

  2. 窃听者 Eve 并不一定是人类,有可能是安装在通信设备上的某种窃听器,也可能是安装在邮件软件和邮件服务器上的某些程序。

对称密码与公钥密码

  1. 对称密码( symmetric cryptography )是指在加密和解密时使用同一密钥的方式

  2. 公钥密码( public-key cryptography )则是指在加密和解密时使用不同密钥的方式。因此,公钥密码又称为非对称密码( asymmetric cryptography )。

其他密码技术

单向散列函数

  1. 单向散列函数:单向散列函数所保证的并不是机密性,而是完整性( integrity )。完整性指的是 “数据是正牌的而不是伪造的” 这一性质。使用单向散列函数,就可以检测出数据是否被篡改过。
  2. 散 列 值( hash ) 又称哈希值、密码校验和(cryptographic checksum )、指纹( fingerprint )、消息摘要( message)

消息认证码

  1. 通过使用消息认证码,不但能够确认消息是否被篡改,而且能够确认消息是否来自所期待的通信对象。也就是说,消息认证码不仅能够保证完整性,还能够提供认证(authentication )机制。

数字签名

  1. 数字签名就是一种将现实世界中的签名和盖章移植到数字世界中的技术,它也是一种重要的密码技术

伪随机数生成器

  1. 伪随机数生成器( Pseudo Random Number Generator, PRNG )是一种能够模拟产生随机数列的算法。

  2. 在 Web 中进行 SSL/TLS 通信时,会生成一个仅用于当前通信的临时密钥( 会话密钥 ),这个密钥就是基于伪随机数生成器生成的。如果生成随机数的算法不好,
    窃听者就能够推测出密钥,从而带来通信机密性下降的风险。

密码学家的工具箱

• 对称密码
• 公钥密码
• 单向散列函数
• 消息认证码
• 数字签名
• 伪随机数生成器

在这里插入图片描述

隐写术与数宇水印

  1. 还有另外一种技术,它不是让消息内容变得无法解读,而是能够隐藏消息
    本身,这种技术称为隐写术( steganography )。

  2. 密码隐藏的是内容,隐写术隐藏的是消息本身。通过将密码与隐写术相结合,就可以同时产生两者所各自具备的效果。

  3. 举例:我很喜欢你

    们先准备一段话,
    容易看懂的就可以,
    闻乐见的当然更好。
    迎你尝试将另一句话嵌在这段话中,
    会发现这其实就是一种隐写术。

安全常识

  1. • 不要使用保密的密码算法:一旦密码算法的详细信息被暴露,依靠对密码算法本身进行保密来确保机密性的密码系统也就土崩瓦解了。反之,那些公开的算法从一开始就没有设想过要保密,因此算法的暴露丝毫不会削弱它们的强度

  2. • 使用低强度的密码比不进行任何加密更危险:现在世界上公开的被认为强度较高的密码算法,几乎都是经过密码破译者长期尝试破解未果而存活下来的。因此,如果认为 “公司自己开发的密码系统比那些公开的密码系统更强”,那只能说是过于高估自己公司的能力了。

  3. • 任何密码总有一天都会被破解

  4. • 密码只是信息安全的一部分

历史上的密码

恺撒密码

  1. 恺撒密码是通过将明文中所使用的字母表按照一定的字数 “平移” 来进行加密的。在日语( 例如平假名 )或者汉语( 例如汉语拼音)中也可以用同样的思路来实现惜撒密码。
    在这里插入图片描述

加密

在这个场景中,密钥 3 必须由发送者和接收者事先约定好。

package main

const key = 3

func Crypto(src string)string{
	src_ := []rune(src)
	for index,val:=range src_{
		src_[index]=val+3
	}
	return string(src_)
}

func main() {
	println(Crypto("你好世界"))
	// 佣妀丙畏
}

解密

func DeCrypto(src string)string{
	src_ := []rune(src)
	for index,val:=range src_{
		src_[index]=val-key
	}
	return string(src_)
}

用暴力破解来破译密码

func DeCrypto(src string,key rune)string{
	src_ := []rune(src)
	for index,val:=range src_{
		src_[index]=val-key
	}
	return string(src_)
}

func Fuck(src string)string{
	for tmpKey:=0;tmpKey<=26;tmpKey++{
		fmt.Println(DeCrypto(src,int32(tmpKey)))
	}
	return ""
}
佣妀丙畏
佢奿丘畎
佡奾丗畍

你好世界

佟奼丕畋
佞奻且畊
佝奺专畉
作她丒畈
佛奸丑畇
佚奷丐畆
余奶丏畅
佘奵与畄
佗奴不畃
佖女丌畂
何奲下畁
佔奱上畀
体奰三甿
佒奯丈甾
佑奮万甽
佐奭丆甼
住奬丅画
低奫丄町
位奪七甹
佌奩丂甸
佋奨丁男
佊奧一甶
佉奦䷿电

凯撒密码太脆弱,无法保护重要信息。

简单替换密码

  1. 将明文中所使用的字母表替换为另一套宇母表的密码称为简单替换密码( simple substitution cipher )0 恺撒密码也可以说是简单替换密码的一种。
    在这里插入图片描述
  2. 简单替换密码很难通过暴力破解来破译

用频率分析来破译密码

MEYLGVIWAMEYOPINYZGWYEGMZRUUYPZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEYCIUYMGIF
RWCEGLOPINYZHRZMPDNYWDWOGWITDWYSEDCEEIAFYYWMPIDWYAGTYPIKGLMXFPIWCEHRZMMEYMEDWOMG
QRYWCEUXMEDPZMQRGMEEYAPISDWOFICJILYSNICYZEYMGGJIPRWIWAIHRUNIWAHRZMUDZZYAMEYFRWCE
MRPWDWOPGRWAIOIDWSDMEIGWYMSGMEPYYEYHRUNYARNFRMSDMEWGOPYIMYPZRCCYZZIOIDWIWAIOIDWE
YMPDYAILMYPMEYMYUNMDWOUGPZYKFRMIMKIZMEIAMGODTYDMRNIWASIKJYAISIXSDMEEDZWGZYDWMEYI
DPZIXDWODIU2RPYMEYXIPYZGRPDMDZYIZXMGAYZNDZYSEIMXGRCIWWGMOYM
  1. 首先,统计一下这段密文中每个字母出现的频率

  2. 线索:一般的英语文章中出现频率最高的字母是 e, 这一点基本上是不会错的,将Y替换为e

    MEeLGVIWAMEeOPINeZGWeEGMZRUUePZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEeCIUeMGIF
    RWCEGLOPINeZHRZMPDNeWDWOGWITDWeSEDCEEIAFeeWMPIDWeAGTePIKGLMXFPIWCEHRZMMEeMEDWOMG
    QReWCEUXMEDPZMQRGMEEeAPISDWOFICJILeSNICeZEeMGGJIPRWIWAIHHUNIWAHRZMUDZZeAMEeFRWCE
    MRPWDWOPGRWAIOIDWSDMEIGWeMSGMEPeeEeHRUNeARNFRMSDMEWGOPelMePZRCCeZZIOIDWIWAIOIDWE
    eMPDeAILMePMEeMeUNMDWOUGPZeKFRMIMKIZMEIAMGODTeDMRNIWASIKJeAISIXSDMEEDZWGZeDWMEel
    DPZIXDWODIUZRPeMEeXIPeZGRPDMDZelZXMGAeZNDZeSEIMXGRCIWWGMOeM
    
  3. 线索:英语中出现最多的单同是 the,假设 M== t,E == h

  4. 动员自己所有的英语词汇,在上面的文字中继续寻找可能的组合。发现中间有
    一个词 thPee 比较可疑,假设P== r ?

• 除了高频字母以外,低频字母也能够成为线索
• 搞清开头和结尾能够成为线索,搞清单词之间的分隔也能够成为线索
• 密文越长越容易破译
• 同一个字母连续出现能够成为线索( 这是因为在简单替换密码中,某个字母在替换表中
所对应的另一个字母是固定的)

Enigma

  1. 发送者和接收者各自拥有一台 Enigma。发送者用 Enigma 将明文加密,将生成的密文通过无线电发送给接收者。接收者将接收到的密文用自己的 Enigma 解密,从而得到明文。
  2. 由于发送者和接收者必须使用相同的密钥才能够完成加密通信,因此发送者和接收者会事先收到一份叫作国防军密码本的册子。

在这里插入图片描述
3. 每当按下 Enigma 上的一个键,就会点亮一个灯泡。操作 Enigma 的人可以在按键的同时读出灯泡所对应的字母,然后将这个字母写在纸上。这个操作在发送者一侧是加密,在接收者一侧则是解密。只要将键和灯泡的读法互换一下,在 Enigma 上就可以用完全相同的方法来完成加密和解密两种操作了。

为什么要将密码算法和密钥分开

  1. 恺撒密码
    密码算法:将明文中的各个字母按照指定的字母数平移
    密钥:平移的字母数量
  2. 简单替换密码
    密码算法:按照替换表对字母表进行替换
    密钥:替换表

密码算法是需要重复使用的,但在重复使用同一种算法的过程中,该算法被破译的可
能性也在逐渐增大。因此,就在密码算法中准备了一些可变部分,并在每次通信时都对这部分内容进行改变,而这一可变部分就是密钥。

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

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

相关文章

【JVM】jvm中的方法区简介

jvm中的方法区简介一、JVM体系结构二、方法区是什么&#xff1f;三、方法区能干什么&#xff1f;四、方法区总结一、JVM体系结构 二、方法区是什么&#xff1f; 本文所讲内容在上图中处于运行时数据区内的左侧部分&#xff0c;即 Method Area&#xff08;方法区&#xff09;&a…

REHL7.6静默安装Oracle19C

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

【轨迹跟踪】基于matlab拓展卡尔曼滤波时序四旋翼无人机状态跟踪【含Matlab源码 2246期】

⛄一、拓展卡尔曼滤波时序四旋翼无人机状态跟踪 卡尔曼滤波算法为获得最优估计和最小误差方差&#xff0c;将从目标模型中得到的测量值一步步递推&#xff0c;实时获取新时刻的状态估计值。 假设目标状态方程和观测方程分别为&#xff1a; 其中&#xff0c;k为离散时间&…

投入产出公开数据集:世界投入产出表(1995-2014)、全国投入产出表(1990-2018)、分省市投入产出表(1997-2017)

一、数据介绍 数据名称&#xff1a;世界、全国、各省-投入产出表 数据年份&#xff1a;世界投入产出表(1995-2014)、全国投入产出表(1990-2018)、分省市投入产出表(1997-2017) 数据来源&#xff1a;WIOD、自计算 ① 世界投入产出表&#xff08;1995-2014&#xff09; downlo…

用JSX来写Vue3,瞬间找到React 的感觉

Ⅰ. vue3 的 JSX 写法 对于熟悉react 的小伙伴, 可以通过 jsx 来 做 vue3喜欢 jsx 写法做 vue&#xff0c;代码结构更加美观&#xff0c;让我们一起来踩坑 &#x1f447; 文章目录Ⅰ. vue3 的 JSX 写法Ⅱ. JSX 安装和配置1. 通过 webpack 构建的2. 通过 vite 构建的Ⅳ. JSX 的…

Yocto buildhistory介绍

Yocto buildhistory介绍 在yocto中会频繁的编译修改镜像&#xff0c;当多人多次修改镜像的时候会导致镜像难以维护&#xff0c;我们希望能有一个类似git一样的工具能够显示每次编译的差异性修改&#xff0c;这样当我想要回退到某个日期的某个镜像时能够清晰的知道镜像内部的具…

Dockerfile文件详解

组成部分 说明 基础镜像信息 使用 FROM 关键字指定基础镜像信息&#xff0c;必须是 Dockerfile 文件的第1条指令。 维护者信息 使用 MAINTAINER 关键字指定&#xff0c;可以使用 Dockerfile 文件创建者的姓名或者电子邮件作为维护者信息。 镜像操作指令 每执行一条镜像操…

vue3+Element-plus el-select 下拉选择 多选增加全选封装组件

一、效果图&#xff08;含适用于条件查询组件中使用&#xff09; 二、参数配置 1、代码示例&#xff1a; <t-selectplaceholder"请选择工序"v-model"selectVlaue":optionSource"state.stepList"valueKey"label"change"selec…

部署SpringBoot+Vue3 项目实战,打造企业级在线办公系统

文章目录一、安装docker二、安装2.1. 安装mysql2.2. 安装MongoDB2.3. 安装Redis程序2.4. 安装RabbitMQ2.5. 在云主机上面开放端口三、部署后端项目3.1. 下载JDK镜像3.2. 部署工作流项目3.3. 部署emos-api项目四、在Docker中部署前端项目4.1. 修改前端代码4.2. 打包VUE项目4.3. …

【Hack The Box】linux练习-- time

HTB 学习笔记 【Hack The Box】linux练习-- time &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月24日&#x1f334; &#x1f36d…

Android~Compose脚手架和Toast

系列文章目录 Android~Compose初探Android~Compose之自定义ViewAndroid~Compose相关概念总结Android~Compose脚手架和ToastAndroid~Compose路由Navigation和传参 文章目录系列文章目录目标脚手架基于Snackbar自定义Toast实现效果目标 熟悉Compose中脚手架使用自定义Toast样式…

人工智能轨道交通行业周刊-第24期(2022.11.21-11.27)

追风赶月莫停留&#xff0c;平芜尽处是春山。 --《田歆华夏说》 本期关键词&#xff1a;BIM应用、地铁控制中心、车辆检修智能化、模型轻量化、隧道通风 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交…

【树莓派不吃灰】Linux篇⑥ 正规表示法与文件格式化处理(核心概念)

目录1. 什么是正则表示法2. 基础正规表示法&#xff08;grep、sed&#xff09;3. 延伸正规表示法4. 文件的格式化与相关处理&#xff08;printf、awk&#xff09;5. 重点回顾❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-11…

FPGA实现视频拼接,纯逻辑资源搭建,提供4套工程源码和技术支持

目录1.本方案的实用价值2.总体设计方案3.视频拼接方案算法4.工程1&#xff1a;单路视频输出5.工程2&#xff1a;2路视频拼接输出6.工程3&#xff1a;3路视频拼接输出7.工程4&#xff1a;4路视频拼接输出8.上板调试验证9.福利&#xff1a;工程源码获取1.本方案的实用价值 FPGA实…

【软件测试】测试与开发一对欢喜冤家......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 大伙普遍的看法&…

28.开机默认启动系统-ubuntu和win10

在win10下安装了Ubuntu20.04系统&#xff0c;默认情况下&#xff0c;启动的是Ubuntu系统。 要将默认启动系统设置成win10&#xff0c;方法如下&#xff1a; 1、进入ubuntu系统&#xff0c;按住CtrlAltT键&#xff0c;打开终端。 2、输入命令&#xff1a; sudo gedit /etc/d…

TCP常见问题

一、TCP连接的保活机制 在一段时间内&#xff0c;如果TCP连接两方都没有数据交互&#xff0c;TCP的保活机制**&#xff08;TCP keepalive&#xff09;**会起作用&#xff0c;每隔一个时间段会发送一个探测报文&#xff0c;如果连着好几个探测报文都没有得到相应&#xff0c;则…

Buffer Pool详解

文章目录一、简介二、缓存页三、Free链表四、Flush链表五、LRU链表六、脏页刷新七、多个Buffer pool八、Chunk单位一、简介 ​ mysql的数据都是存放在磁盘下的&#xff0c;为了加快cpu从磁盘i/o读取数据的效率&#xff0c;Innodb存储引擎在cpu和磁盘中间添加了一个缓冲区buffe…

web表格(详解)

目录 1.概述 2.表格的基本结构 3.表格的属性 4.单元格合并 1.概述 表格的基本语法结构&#xff1a; <table><tr><td>单元格内容</td>……</tr><tr><td>单元格内容</td>……</tr> </table> 其中< table>…

[附源码]SSM计算机毕业设计视屏网站论文JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…