加密那些事

news2024/11/27 2:37:02

一、前言

        说到加解密也许有些人会有些陌生(仅对于初学者或其他行业的学者),先不说那些让人看到千篇一律的概念,就是如果两个人发信息怎样才能不被第三个人知道呢?是不是脑海里冒出了使用某种暗号,只有相互传信的人了解其中的奥秘,就算别人看到了也没有办法解开你们传递的真正含义。

二、前世今生

 2.1、前世(历史的加密算法应用)

        既然说到了加密就不得不提加密工具提到加密工具,下面简单列举下历史中加密算法出现的场景。

        时间回到公元前1000年相传商纣王末年,姜太公辅佐周室。有一次,他们带领的周军指挥大营被叛兵包围,情况危急,姜太公令信使突围,回朝搬兵,他怕信使遗忘机密,又怕周文王不认识信使,耽误军务大事,就将自己珍爱的鱼竿折成数节,每节长短不一,各代表一件军机,令信使牢记,不得外传。信使几经周折回到朝中,周文王令左右将几节鱼竿合在一起,亲自检验,周文王辨认出是姜太公的心爱之物,亲率大军到事发地点,解了姜太公之危。事后,姜太公拿着那几节使他化险为夷、转危为安的鱼竿,妙思如泉涌,他将鱼竿传信的办法加以改进,便发明了“阴符”。

        再回到公元前405年伯罗奔尼撒战争进入尾声。斯巴达统帅抓住一名雅典信使并在他身上搜到了一条布满杂乱无章字母的腰带,看起来并没有重要信息,无意中,统帅将腰带缠到剑鞘上,竟发现杂乱的字母有序地对接到一起,重要的军事情报显露出来。这实际上就是人类历史上最早的加密器械之一“斯巴达棒”。

        在近现代历史中,加密技术在两次世界大战中发挥了重要作用。例如,恩格玛密码机是纳粹德国在二战期间使用的一种复杂加密机器,它采用了旋转轮盘和电气线路来生成复杂的密码。盟军曾花费大量时间和精力来破解恩格玛密码,最终由艾伦·图灵领导的破解小组成功破解了这种密码,为盟军取得了重要的胜利,他因此挽救了数百万人的生命。

细思极恐,是不是发现这些都源于战争

 2.2、今生(现代的加密算法应用)

 2.2.1 、金融领域

        现代科技的不断进步,现代生活中也演变出了很多新的加密技术,让人最耳熟能详的就是区块链技术了;实际把区块链应用到金融货币领域就是耳熟能详的比特币了。说到这里可能有些人会对区块链有点好奇但是又不知它其中的奥秘,最大的疑问莫过于区块链能防止篡改,怎么我就改不了你的账本了呢?

其实就是一群人在记账的过程,区块链系统中的每一个人都有机会参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和账本的变化记在一个区块(block)中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据指纹链接(chain)这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术(Blockchain)。

 2.2.2、数据存储领域

        主要是用于数据库存储数据加密,比如说现在的购物网站或者医疗网站一些用户隐私的数据都是加密存储的,就算有人直接拿到用户的数据也是无法直接查看使用的,比如某一个用户的银行卡号实际号码是abc那么实际数据库存储的可能就是:sfsdfdssf=== 。

2.2.3、互联网通信领域

        互联网高速发展的现代,诞生了许多社交软件,也方便了大家沟通传递各种信息,再也不用之前那样繁琐的去寄邮件了,但是有利就有弊端,怎么样防止两个人聊天的内容在传递过程中被黑客截获呢?这样就引出了HTTPS,so?又来一个不认识的单词,别着急用一种生动的方式给大家介绍下它的工作原理。

小明和小红想通过飞鸽传达信件,但是呢又害怕被别人截取信件进而看到信件的内容,小明思索再三就想到了用加密的方法(对称加密),这样就万无一失了。但是呢小明突然发现如果他和小红不认识怎么办?用这种商量的办法貌似不太行哈,所以就改进了一下传信方案,给小红的信件里面只带一个空的信箱,信箱上面带一个开着的锁头,小红写完信将信件上锁,这样小明收到的信件就可以用钥匙解锁查看了(悄悄的说其实这个就是非对称加密哦)。然而仔细想想这样其实还有问题,就是小红不能确定这个信箱是不是小明发过来的呀,万一是别人冒充小明呢发写信呢?于是呢就找到了小镇上面有权威的小信,每次发信息除了收件人和发件人的签名还有一个小信的签名(这个签名就是SSL签名)。但是呢这并不是最终结果,最终结果是鸽子要罢工,因为每次带着一个锁太重了,于是小明和小红优化了加密的方案把一开始携带的锁头更换为了对称加密的规则传递,这样后续双方就使用对称加密就能进行通讯啦。大概就是下面这张图这样

三、洞若观火(加密算法的如何工作的)

        上面说了这么多那么实际有哪些加密算法呢?他们是咋样加密工作的,别着急下面娓娓道来。

3.1、对称加密

        通俗的说其实就是一把锁两把钥匙,小红和小明写信害怕被人看到信件内容,所以买了一个密码本,然后呢只有小明和小红有这个密码本的密码,你以为这样就万无一失了?小黑是个偷窥狂,有一次无意间窃取了小红的密码。如果用绘图的方式呢大概就是这样(图片画的有点粗糙见谅哈)。

        

         常见的有SM1(国产)、AES、DES、3DES(TDEA)、RC5等加密算法都是对称加密算法。虽然这些算法很多但是大部分属于阉割版,也就是说因受到美国军事出口限制在其密钥长度上有所缩减,加密强度有所降低。例如,DES算法因受到军事出口限制,目前仅提供56位的密钥长度,而事实上,安全要求则至少需要128位。不过别灰心,我们强大的祖国也研发了自己的对称加密算法SM1虽然它没有对外公布商用但是在不久的将来它会公布于众的。

3.2、非对称加密

        顾名思义它的加密方式是非对称的,这次小明发现她和小红的聊天被人窃取了,然后小明想了下就采用了新的方式买了一个高级信箱有两个柜子一个柜子可以放入信件(寄件箱),放入的信件就会进入下面的柜子(收件箱),这样小明把寄件箱的钥匙送给了小红,小明自己保留了信箱的收件箱钥匙,只有他自己能打开。

        大概就是这么个意思,但是这时候就有人会问你这样也不安全啊,给小红的钥匙还是会被人偷走或者被人复制,这样中间人篡改信件内容或者冒充小红写信了?早就防着小黑子了,其实就算小红的钥匙被窃取也没有关系,这里还有一个重要的概念,签名防止小黑子冒充(证书具有权威机构颁发的授权证书),当然这里只是简单介绍方便大家理解,其实里面有很多专业术语,这里就不再赘述了。

        常见的非对称加密算法有SM2(国产)、RSA、Elgamal,也许耳熟能详的大概大家对于RSA比较熟悉,但是这里要说下SM2国密加密算法(因为他是中国研发的加密算法),SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。

3.3、摘要

        最后说一下不可逆加密算法,它将任意长度的输入数据映射为固定长度的输出数据,称为摘要。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密。摘要算法通常用于文件完整性验证、密码存储、数字签名等领域,因为任何对数据的修改都会导致摘要的改变。

        常见的摘要算法有SM3(国产)、MD5、SHA-256等,这里的SM3性能以及安全性和SHA-256是相当的。下面罗列了下他们之间的性能比较。

几种摘要算法比较
信息摘要算法信息输入长度摘要输出长度安全性
SM3*256bits(32字节)高,推荐使用
MD5*128bits(16字节)低,有被碰撞的可能性
SHA256<2^64256bits(32字节)高,推荐使用,最长使用
*是任意长度

四、蓦然回首

        加密安全贯穿古今事件,是人类发展的印证,但加密不仅仅文中提到的这些,文中提到的只是加密发展的冰山一角;如果你问上面这些加密算法那个是最安全的,那个是万无一失的,我会回答没有绝对的安全,因为随着计算机算力的提高任何加密数据会逐渐缩短,只能说我们在信息传递过程或信息存储过程中避免数据直接暴露给外部让小黑子拿到不是可以直接使用的,这其实也是加密安全的初衷。说了这么多的加密的事,希望大家有所收获,当然有什么疑惑或者想探讨的也欢迎大家留言,在下知无不言。

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

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

相关文章

每一个“大佬级别”的测试工程师,都有着怎样的成长那个路线?3分钟为你揭晓谜底!

目录 引言 1.何为软件测试工程师&#xff1f; 2.软件测试工程师的职责&#xff1f; 3.为什么要做软件测试&#xff1f; 4.软件测试的前途如何&#xff1f; 5.工具和思维谁更重要&#xff1f; 6.测试和开发相差大吗&#xff1f; 7.成为测试工程师的必备条件 8.测试的分…

虚拟机栈概述

一、概述 1.1、虚拟机栈背景 由于跨平台性的设计&#xff0c;Java的指令都是根据栈来设计的。不同平台CPU架构不同&#xff0c;所以不能设计为基于寄存器的。 优点是跨平台&#xff0c;指令集小&#xff0c;编译器容易实现&#xff0c;缺点是性能下降&#xff0c;实现同样的功…

网络分析和机器学习

文章目录 网络分析1.Introduction to networks and graph foundations and algorithmsNetwork types (social/bio/comp), Euler/Hamilton, Graphs (matrix/adj)Breadth-first search (shortest paths), Depth-first search (conn. compnts) 2. Emergent global / local network…

PS的基础操作

1、图片放大缩小alt鼠标滚轮 2、按住空格不放&#xff0c;拖拽鼠标可以改变图片的位置 3、英文状态下按字母t&#xff0c;再点击想要查看的文字&#xff0c;就可以在菜单栏上看到所有属性&#xff08;取消选中按esc键) 4、点击它可以画选区来查看间距&#xff1b; w代表宽;h代表…

Jenkins版本升级

Jenkins版本过低的时候&#xff0c;一些插件无法升级&#xff0c;会引发一系列错误&#xff0c;这个时候我们就要升级版本了 一、下载更新包 第一种方式&#xff1a;Jenkins页面下载最新包 第二种官网上下载war包(Jenkins官网) 二、打开服务器搜索jenkins.war路径 1、如果Jenk…

CSDN 的 MD编辑器一些用法

一、点击关键语句跳转指定位置 在CSDN写文章的时候&#xff0c;写的文章过长往往会让读者很难找到自己想看的部分&#xff0c;这时候有个 跳转到指定位置功能 就非常的便利。CSDN在MD编辑器上(富文本编辑器只有一种)就提供了两种跳转到指定位置的方法&#xff1a; 一、目录转跳…

【SCADA】KingSCADA将数据插入SQLServer的方法

大家好&#xff0c;我是雷工&#xff01; 本篇通过实例&#xff0c;介绍KingSCADA3.7访问SQL Server2022数据库。 一、概述 1、创建数据库及数据表格&#xff1b; 2、配置ODBC数据源。 3、通过KingSCADA与数据库建立连接&#xff0c;将数据写入数据库对应表格。 二、创建数据…

自动化测试与手工测试?你真的了解吗?如何共存...

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

代码随想录算法训练营第二十七天|39. 组合总和 40.组合总和II131.分割回文串

文章目录 39. 组合总和思路代码总结 40.组合总和II思路代码总结 131.分割回文串思路代码总结 39. 组合总和 思路 我举过例子&#xff0c;如果是一个集合来求组合的话&#xff0c;就需要startIndex&#xff0c;例如&#xff1a;77.组合 &#xff0c;216.组合总和III 。 如果是…

【AIGC使用教程】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【AIGC使用教程】 专栏 【AIGC使用教程】SciSpace 论文阅读神器 【AIGC使用教程】Microsoft Edge/Bing Chat 注册使用完全指南 【AIGC使用教程】GitHub Copilot 免费注册及在 VS Code 中的安装使用 【AIGC使用教程】GitHub Copilot 免费注册及在 PyCharm 中的安装使用 …

算法时间复杂度

参考视频&#xff1a;https://www.bilibili.com/video/BV14j411f7DJ 目录 1.常数阶O(1) 2.对数阶O(IogN) 3.线性阶O(n) 4.线性对数阶O(nlogN) 5.平方阶O(n^2) 6.立方阶O(n^3) 7.K次方阶O(n^k) 8.指数阶(2^n) 9.阶乘O(n!) 两层for循环 for (int i 1; i <…

有模型强化学习和免模型强化学习有什么区别?

有模型强化学习&#xff08;Model-Based Reinforcement Learning&#xff09;和无模型强化学习&#xff08;Model-Free Reinforcement Learning&#xff09;是两种不同的强化学习方法。 有模型强化学习是指&#xff0c;智能体在学习过程中能够对环境进行建模&#xff0c;即学习…

软件测试分类: 你需要知道的不同类型测试

文章目录 一. 按测试对象进行划分1. 界面测试2. 可靠性测试3. 容错性4. 文档测试5. 兼容性测试6. 易用性测试7. 安装卸载的测试8. 安全测试9. 性能测试10. 内存泄漏测试 二. 按是否查看代码划分1. 黑盒测试(Black-box Testing)2. 白盒测试(White-box Testing)冒泡排序测试用例进…

【1 Vue基础 - 模板语法-绑定】

1 VSCode代码片段 链接: link 2 Mustache双大括号语法 插入内容 <body><div id"app"><!-- 1.基本使用 --><h2>{{ message }}</h2><h2>当前计数: {{ counter }} </h2><!-- 2.表达式 --><h2>计数双倍: {{ c…

研发项目工时统计工具哪个好?9大工时管理系统盘点

工时管理是项目型企业的重要需求&#xff0c;特别是在人力成本占比较高的行业&#xff0c;如软件开发、设计咨询、会计律师等。工时管理可以帮助企业核算项目人工成本&#xff0c;控制成本投入&#xff0c;提高项目利润&#xff0c;客观考核员工绩效&#xff0c;优化资源分配等…

C++类和对象入门(中)

C类和对象入门 中 1. 类的6个默认成员函数2. 构造函数2.1 概念2.2 特性 3.初始化列表4.析构函数4.2 特性 5. 拷贝构造函数5.1 特性 6.运算符重载6.1 赋值运算符重载6.2前置和后置重载 7. 自实现日期类 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空…

golang 服务中 context 超时处理的思考

文章目录 前言起因&#xff1a;日志告警引发的思考什么是contextcontext的作用context超时之后继续执行 or 中断 最后 前言 公司运行的服务代码中&#xff0c;随处可见各种各样的日志信息&#xff0c;其中大多数是用来记录各种异常的日志&#xff0c;一方面&#xff0c;当出现…

煤矿电子封条实施方案 yolov7

煤矿电子封条实施方案采用YOLOv7网络模型算法技术&#xff0c;煤矿电子封条实施算法模型过将全国各省矿山实时监测数据&#xff0c;实现对全国各矿山及时有效的处理及分析。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;研究团队希望它能够同时支持移动 GPU 和…

Arthas实现热更新代码

目录 1.Arthas简介 2.准备Demo 3.启动Arthas 4.Arthas命令 5.使用retransform命令热更新代码 1.Arthas简介 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对…

Python中的模块2

为了加快导入模块的速度&#xff0c;Python会缓存之前使用过的模块。 1 保存缓存文件的路径 Python会将之前编译过的模块保存在与该模块同一目录中的“__pycache__”文件夹中。 2 缓存文件名 缓存文件会以“模块名.版本号.pyc”格式命名。图1为使用yang_module.py模块后得到…