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

现代密码学--结课论文---《70年代公钥传奇》

摘要:70年代之前,密码学主要被军方用于通信保护。密码学的主要研究也是由情报机构(GCHQNSA等)或IBM等企业运营的获得许可的实验室中进行。这时公众几乎无法获得密码学知识,直到由三位密码学家HellmanDiffieMerkle出版的公开密码学打破了密码学的垄断,同时也引起了密码学的第一次大热潮。

关键词:密码学;通信保护;垄断;热潮

1 公共密码学的定义和工作原理

密码学是保护信息免受敌人或者无权获取信息的人截取的作用,即如何在敌人存在的环境中进行正常通信。它是确保信息真实性和完整性的底层机制,也是使区块链和加密货币变成现实的原因之一。公钥加密是加密使用的一种范式转变,现在依然是大多数加密货币协议采用的加密方式之一。从本质上讲,公钥密码学允许人们通过不安全的渠道将加密信息发送到公共地址,只有有权访问公共地址对应的私钥的人才能获得解密信息。私钥还用于签署和验证发送的信息,以验证其来源的合法性。通过区块网络,人们可以将比特币发送到公共地址并查看它持有多少比特币,但只有拥有相应私钥的所有者才能使用比特币进行交易。密码学的第一次大热潮,如何摆脱政府对密码学知识的控制?

2 Hellman一个雄心勃勃的年轻人

Hellman从小就是一个书呆子,他的父亲是当地一所高中的物理老师,所以他从小就能接触到科学知识。他回忆说:“我父亲的书架上有一些书,我时常会阅读它们。包括我现在还记得的一本书《Ganot's Physics》,1890年代的旧物理文本。显然即使对父亲来说也算是老古董了,但我很喜欢。所以我对科学感兴趣,但并不是从开始就特别喜欢密码学。”。

Hellman并非从小开始接触密码学,也许他在某个时段学习过密码学,但直到后来他才与计算机科学产生了很多的联系。甚至说他在早年就已经规划好自己的未来的生活。他在1967年在斯坦福大学获得电气工程硕士学位,并在学校里表现出色,度过了非常愉快的时光。他设想自己将在35岁结婚,在此之前环游世界,在大型企业中从事管理工作。

22岁时,他为了加深自己管理方面的研究,选择攻读他在研究决策逻辑相关的思维方式研究,并以此来完成博士学位。令人意想不到的是,攻读博士学位的第一年他就结婚了,这并没有让他放慢脚步,在攻读博士学位的第二年,他就发表了著名的论文:《Learning with Finite Memory》。

到目前为止,他坚持自己的人生计划,按照自己的梦想为IBM工作,选择可环游世界和拥有更多财富的生活方式。

Hellman去了IBM在纽约的Thomas J. Watson研究中心工作,他当时的工作跟密码学毫不相关。但IBM有专注于密码学研究的部门。通过密码学研究中心部门,他认识了一个名叫Horst Feistel的密码学研究员,在此之后,他们经常共进晚餐,讨论密码学和一些还未解决的研究问题。Feistel为政府设计数据加密标准(DES)。在Feistel的介绍下,Hellman开始接触密码学,Feistel也是对Hellman早期影响最大的引路人之一。

当他妻子怀孕时:他开始思考一个不得不面对的永恒困境:家庭和自由?他问自己“我是真的想要环游世界还是想要更多的时间陪伴家人?”

最终他选择了家庭,因此他去了麻省理工电子工程系当助理教授,在那里他遇见了麻省理工电子工程系主任Peter Elias,另一个影响重大的引路人。Peter Elias与信息论之父Claude Shannon合作发明了二战时期使用的现代密码学。HellmanElias成为了很好的朋友,这也加深了他对密码学的迷恋。

1971Hellman回到了斯坦福,到了年底,他开始从事密码学研究。他在斯坦福的朋友和同事都不支持他这样做的决定,他们担心美国政府对密码制作和破解机构的封锁政策。但Hellman相信密码学未来将具有重要的商业价值。1973年,Hellman进行了第一次的密码学演讲,并发布了第一份加密技术报告,引起了大众的关注,这时一位名叫Whitfield Diffie研究员联系到了他。

3 Whitfield Diffie一个聪明到无聊的年轻人

Hellman不同,Diffie早在10岁时就第一次接触到密码学。他的父亲是一位历史教授,并从当地图书馆带回了一些关于密码学的书籍。Diffie喜欢数学,但讨厌学校,因此即使大家都认为迪菲非常聪明,他却从未想过像父亲所希望的安排自己的生活,迪菲只是勉强毕业。尽管他在学校表现的并不出色,但他很聪明,并在麻省理工的入学考试中取得了优异的成绩。他曾尝试如何自学编程,但认为这是非常低级的学习,觉得很是无聊,他选择把大部分时间都花在了学习数学上。

Diffie刚毕业的时候,美国政府开始征召年轻人参与越南战争,但他对战争并不感兴趣,无奈之下,转而从事软件开发和做其他低级的工作。与此同时,他还开始在麻省理工的Project MAC的人工智能实验室做兼职,该工作室是由两个非常聪明的人在管理:Marvin MinskyJohn McCarthy

DiffieMcCarthy保持着良好的关系,并从身上学到了很多。Diffie和当时的许多人都不知道的是,McCarthy后来被视为人工智能之父,AI这个词就是由他创造的。McCarthy相信,学习的每一个过程和智能生物的任何特征原则上都可以精确地描述出来,然后可以通过制造机器来模拟这个过程。McCarthy非常关注未来,他相信智能的概念将会在未来的某一个时刻出现。在他的指导下,Diffie对网络、电子密钥和身份验证有了深入的了解,后来Diffie跟随McCarthy来到斯坦福,加入了新成立的人工智能实验室(SAILStanford Artifical Intelligence Laboratory)。

在斯坦福大学期间,Diffie阅读了David Kahn出版的《The Codebreakers: The Story of Secret Writing》。这本书总结了从古埃及到当时的密码学历史,深刻地影响了Diffie对于隐私的信念。他在1973年离开SAIL,继续专注于密码学的研究。第二年他在全国各地参与活动,与不同的专家一起讨论密码学的未来。他说:我正在做我擅长的事情,那就是在图书馆里寻找稀有手稿,开车四处走动,拜访大学的朋友。

1974年,他访问了IBM Thomas J. Watson实验室,与密码学研究团队会面。当时向Hellman介绍密码学Horst Feistel领导这个团队。在当时,Diffie无法了解很多被NSA列为机密的工作。后来他被推荐给了Martin Hellman,他正好也在研究类似的密码学。

4 HellmanDiffie的相遇

1974年秋天,Diffie出现在我的门前,我永远都不会忘记那一天,Hellman2011年曾回忆道。通过介绍,他们约定在Hellman家中会面。Diffie下午就来了,晚上11点才离开。在这几个小时的时间里,他们讨论地越来越忘我,从密码学到哲学。Hellman讲述说,找到志同道合的朋友真的很重要,在不被理解的环境里工作是一种极大的负担。不久之后,Diffie在当地的一个研究小组工作,平时他会花更多的时间和Hellman一起研究密码学。

1975年初,美国政府制定了数据加密标准DES,这是第一个被批准用于公共和商业用途的加密协议。在NSA的推动下,金融服务业和其他需要强加密的商业部门(SIM卡、网络设备、路由器和解调器)等陆续采用DES

DES公布之前,密码学和军用性质的物品一样,必须获得许可才能被采用,或从事相关的工作。DES是第一次公开批准使用这种技术。

1972年美国国家标准与技术研究院NIST进行的一个研究中,人们意识到了对大众加密密码的需求。1973年和1974年人们开始向美国各地的研究中心提议设计出适用于大众生活的加密密码。1974IBM构思出了一种名为Lucifer的加密密码。

Lucifer是由IBM密码学研究部门研究员Horst Feistel领导设计的。该密码是对先前开发的密码的改进,但符合NSA的设计要求。在经过NSA的实际使用之后,NSA希望将密钥大小从64位减少到48位,这意味着只需要更少的处理能力即可加密和解密。在经过讨论之后,最终密钥的大小减少到56位。

HellmanDiffie最初是张开双臂拥抱DES的,因为他们认为这是将密码学带入公众视野的一大步。但他们发现缩短密钥的长度非常容易受到攻击,无法保障信息的安全。更重要的是,IBM研究团队指责NSA擅自篡改了密码。在密码被华盛顿进行审批返回后,研究人员发现密码被更改过。

70年代,人们普遍对政府不信任,这种警惕源于二战前后集权主义政府对民众的控制。在1984有许多探讨关于政府监督、社会控制和个人自由的言论热潮,这场讨论也反映了公众对政府角色的警惕。这种情绪一直持续到到60年代,期间因肯尼迪遇刺、古巴导弹危机、黑人权利和同性恋权利等发生了影响重大的社会政治运动。70年代水门事件加剧了这种恐慌,尼克松总统授权窃听民进党全国委员会总部的会议。对于公众来说,他们的恐慌正在慢慢变成现实。

人们甚至相信美国国家安全局已经建立了不为公众所知的获取信息的方式。

5 Merkle一个发挥关键作用却还未察觉的年轻人

DES发布后不久,HellmanDiffie发布了一篇名为Multi-User Cryptographic Techniques的技术论文,他们很快了解到来自伯克利的23岁计算机科学专业的学生Ralph Merkle同样在研究这个问题。

在遇见HellmanDiffie之前,Merkle就已经开始研究公钥加密概念了,这就是后来的Merkle谜题。他在学习计算机科学课程时偶然提出了一个问题:当敌人已经知道所有的信息时,如何重建新的安全通信?他把这个问题当成了这门课程的研究主题开始研究。

当我想到窃听者知道一切并且在被监听的情况下,你似乎无法建立安全性。所以我第一个想法是,我要尝试证明它是不可能的。但当我开始证明这种情况下无法建立安全性时,我尝试了很多次,最终发现无法证明它是不可能的。

然后我想了想,既然我不能证明你做不到,我就反过来想办法去做。在我试图证明无法做到的过程中,我很清晰证明过程中存在的一些缺陷。当我开始证明它是能够做到的时候,我尝试用各种办法来完善存在的缺陷,当我清楚如何做到时,这一切发生的非常迅速。我可以找到一个即使敌人、闯入者、倾听者知道一切的前提下通过加密密钥来建立安全的通信路线的方式。

由于Merkle并没有了解过密码学的历史,也没有学习过密码学的理论知识,所以他并不认为这个问题是无法解决的。他把所有的想法写下来,然后当初分享,却遭到了很多人的质疑和否定。

计算机安全课的老师听不懂他的作业内容,叫Merkle停止这种天真的想法。计算机科学期刊拒绝发表他的研究内容,因为编辑认为他的工作内容并不在当时密码学思想的主流当中。

在机缘巧合之后,Merkle与一位名叫Peter Blatman的计算机科学家分享他的想法,后者立即注意到了他的研究价值。Merkle不知道BlatmanDiffie的朋友,在Diffie邀请Blatman去斯坦福参加密码学聚会的途中,Blatman简要概述了Merkle正在解决的问题。

显然,Diffie多年来一直在为同一个问题着迷,在听说某个年轻的计算机科学专业学生如何潜在地解决了这个问题后,他先是直接否认了这种可能性,然后开始对这种解决方案的可能性感到兴奋。随后Diffie发给了Merkle一篇最近提交的论文,主要内容是在假设可能的情况下探索公钥加密的应用。

在读完寄来的论文之后,Merkle把自己的论文也寄了过去。HellmanDiffie看完之后,深受启发,完全转变了研究思路。尽管Merkle年轻且完全缺乏密码学知识,但他的创作力已经解决了公钥分配问题。这位年仅23岁的年轻人设法实现了诸多学者多年来努力未能做到的事情。

但是HellmanDiffie发现他的解决方案效率低下,凭借他们对密码学的理解,很快就找到了解决密钥分配问题更加高效的方案,并提出了公钥密码学新的发展方向。很快,他们的研究内容被写成一篇论文,被称为密码学的新方向。

Merkle也接受了Hellman的邀请,前往斯坦福大学,并作为博士生在Hellman手下工作。

6 密码学的新方向

197611月发表的《密码学的新方向》论文中,主要讨论了密码学、公钥密码和促进认证通信协议的基本问题。

Merkle因其工作而受到赞誉,但最终通信协议被命名为:Diffie-Hellman密钥交换。然而尽管如此,在1977年公钥加密获得专利时,Merkle被认为是三位发明者之一,Diffie认为默克尔可能是公钥传奇中最具创造力的角色。

在这篇文章当中,讨论的概念就是用于设计和保护我们今天所使用的区块链。最后他们表明本文的目的之一:激励其他人在这个令人着迷的领域工作,这个几乎被政府完全垄断的领域——密码学新方向。

Hellman他们的工作打破了政府对密码学知识的控制,公众也第一次获得使用强大的加密技术的机会。由于对政府的DES密码的不信任,论文中的技术引发了公众对加密学和加密研究的第一次大浪潮。

后来知道HellmanDiffieMerkle并不是公钥密码学的第一批构思者,它的一种形式最初是由英国情报机构(GCHQ)的研究人员创建并应用于通信的,但它一直都属于机密,无法被公众所知道。想象一下,如果这三位从未公开过公钥加密,我们的世界可能会非常不同。

HellmanDiffieMerkle发表的论文成功地激发了新一轮的创新浪潮。这场浪潮将持续数十年,而政府机构却对他们的发现不加理睬,这种对比非常突出了密码学和其他科学领域中开放式协作工作的重要性。

正如论文第一行开头写到的那样,我们今天站在密码学革命的边缘。Merkle作为HellmanDiffie的学生,在80十年代发明加密散列技术,继续影响密码学的发展。

7 总结

HellmanDiffieMerkle三位密码学家打破了公众和密码学之间的障碍,80年代被称为David Chaum的密码学将继续直接建立在他们的工作之上,将匿名通信、支付以及去中心化服务的需求概念化。显然只有通过70年代三位密码学家的奉献,David Chaum的工作才变得可能。

相关文章:

现代密码学--结课论文---《70年代公钥传奇》

摘要:在70年代之前,密码学主要被军方用于通信保护。密码学的主要研究也是由情报机构(GCHQ、NSA等)或IBM等企业运营的获得许可的实验室中进行。这时公众几乎无法获得密码学知识,直到由三位密码学家Hellman、Diffie和Mer…...

cf1348B phoenix and beauty(双指针滑动窗口的构造)

C 题面 Problem - 1348B - Codeforces 输出标准输出 凤凰网喜欢美丽的数组。如果一个数组中所有长度为k的子数组 的子数都有相同的总和,那么这个数组就是美丽的。一个数组的子数组是任何连续元素的序列。 凤凰网目前有一个数组a 的长度为n . 他想在他的数组中插入…...

一文读懂JAVA的hashCode方法:原理、实现与应用

目录 一、概述二、实现原理和重写规则三、如何重写hashCode方法3.1 Objects.hash()方法3.2 Apache HashCodeBuilder.3.3 Google Guava3.4 自定义哈希算法四、hashcode和equals的联系五、注意事项和建议5.1 注意事项5.2 建议六、总结一、概述 在Java中,每个对象都有一个hashCod…...

RocketMQ部署

一 安装mq 1.下载RocketMQ 本教程使⽤的是RocketMQ4.7.1版本,建议使⽤该版本进⾏之后的demo训练。 运⾏版:https://www.apache.org/dyn/closer.cgi?pathrocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip 源码:https://www.apache.org…...

43岁程序员,投了上万份简历都已读不回,只好把年龄改成40岁,这才有了面试机会,拿到了offer!...

40多岁找工作有多难? 一位43岁的程序员讲述了自己找工作的经历: 80年,大专,目前没到43周岁,年前被裁,简历上的年龄是42岁,两个多月投了上万份简历,99.5%是已读未回。后来改变策略把简…...

MySQL分区表相关知识总结

1.创建分区表: create table t(col11 int null, col22 …) engineinnodb partition by hash(col33) partitions 44; create table t(col11 int null, col22 …) engineinnodb partition by range(id) (partition p0 values less than (10), partition p1 values les…...

outlook邮箱pc/mac客户端下载 含最新版

新的 Outlook for Windows or mac 为 Outlook 应用带来了最新功能、智能辅助功能和新的新式简化设计。 你可以根据自己的风格定制它,并使用新的 Outlook for Windows/mac 执行更多操作! 览版,与我们一起开始旅程,并帮助我们塑造新…...

缓存雪崩、缓存穿透、缓存击穿分别是什么?如何解决?

缓存中存放的大多都是热点数据,目的就是从缓存中获取数据,而不用直接访问数据库,从而提高查询效率 缓存雪崩 概念 指缓存在同一时间大面积失效,后面的请求直接访问数据库,导致数据库短时间内压力过大而崩溃&#xff…...

VBA实战篇学习笔记02 Err错误处理

文章目录 专题VI 错误处理课时38 常见错误类型错误代码13 :类型不匹配错误代码91: 对象变量或者with变量未设置错误代码1004: 视具体错误类型而变化 课时39 Err错误处理On Error Resume Next :Resume语句:Resume Next语句:未知错误:Exit SubOn Error Goto 0 专题VI 错误处理 课…...

【Git】拉取代码/提交代码

1.从将本地代码放入远程仓库 (如果有分支的情况) [git checkout xx切换分支后 git add . 将本地所有改动文件新增 commit之后 git push(将代码全部提交)] 分支操作 #查看分支 git branch #创建分支 git branch test #切换分支 git checkout test #修改代码 #提交代码git ad…...

产品预览 | 系统仿真与三维专业场仿真融合——MWORKS模型降阶工具箱

1 引言 近二十年来,数字化技术迅猛发展,以美国和中国提出装备数字工程为标志,人类迈入全新的数字化时代。装备数字化需要对装备的运行状态和行为进行准确的模拟和预测,这就需要利用系统仿真技术。系统仿真技术能够综合考虑装备的…...

我们都遇到过的这些ajax代码到底什么意思?

hello,我是小索奇,本篇文章给大家带来ajax中常用的一些代码,为什么写这些呢? 因为小索奇也看黑马、尚硅谷等老师的视频,在学习java的时候经常会介绍ajax,导致很多不了解的伙伴一脸懵然,以防万一…...

TiDB实战篇-TiCDC

目录 简介 原理 使用场景 使用限制 硬件配置 部署 在安装TiDB的时候部署 扩容部署 操作 管理CDC 管理工具 查看状态 创建同步任务 公共参数 CDC任务同步到MySQL实战 同步命令 查看所有的同步任务 同步任务的状态 管理同步任务 查看一个同步信息的具体情况 …...

ElasticSearch第十七讲 ES索引别名的使用

索引别名 ES中可以为索引添加别名,一个别名可以指向到多个索引中,同时在添加别名时可以设置筛选条件,指向一个索引的部分数据,实现在关系数据库汇总的视图功能,这就是ES中别名的强大之处。别名是一个非常实用的功能,为我们使用索引提供了极大的灵活性,许多ES的API都支持…...

第二个机器学习应用:乳腺癌数据集在决策树模型上的挖掘

目录 决策树优化与可视化 1 决策树分类 2 决策树可视化 3 显示树的特征重要性 特征重要性可视化 决策树回归 1 决策树回归 决策树优化与可视化 1 决策树分类 from sklearn.datasets import load_breast_cancer from sklearn.tree import DecisionTreeClassifier from sk…...

前端canvas截图酷游地址的方法!

前情提要 想在在JavaScript中&#xff0c;酷游专员KW9㍠ㄇEㄒ提供用HTML5的Canvas元素来剪取画面并存成SVG或PNG。 程式写法(一) 首先&#xff0c;需要在HTML中创建一个Canvas元素<canvas id"myCanvas"></canvas> 在JavaScript中&#xff0c;使用canv…...

2018年入学,2021年入职

2018年的春天&#xff0c;凌晨紧张地查着考研成绩&#xff0c;运气好&#xff0c;384&#xff0c;远远超出了我的预期“能进复试就行”&#xff0c;秉承着“尽人事&#xff0c;知天命”的格言&#xff0c;坚持复习完&#xff0c;坚持到考试最后一秒。 在考试之前&#xff0c;我…...

python+nodejs+ssm+vue 基于协同过滤的旅游推荐系统

本文首先介绍了旅游推荐的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#xff0c;流程图以及…...

【STL十四】函数对象(function object)_仿函数(functor)——lambda表达式

【STL十四】函数对象&#xff08;function object&#xff09;_仿函数&#xff08;functor&#xff09;——lambda表达式 一、函数对象&#xff08;function object&#xff09;二、函数对象优点三、分类四、头文件五、用户定义函数对象demo六、std::内建函数对象1、 算术运算函…...

如何写出高质量的前端代码

写出高质量的前端代码是每个前端开发人员的追求。在一个复杂的项目中&#xff0c;代码质量对于项目的可维护性、可扩展性和可读性都有很大的影响。本文将介绍一些如何写出高质量前端代码的技巧和最佳实践。 一、注重代码结构和组织 1.1 遵循一致的命名规范 命名规范是编写高…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...