首先什么是加密算法:

加密算法的作用就是把一段信息(明文) 通过某种算法 转化为不能(易)看懂的信息 ->既密文

为什要用到加密算法 (加密算法的重要性):

不论政府企业还是个人,运用加密算法的目的莫非与一下几点:

1)保密性 -> 防止个人情报的泄漏

例如我们的用户名与密码是user/password

而通过“加密”保护后就成为了 ee11cbb19052e40b07aac0ca060c23ee/ 5f4dcc3b5aa765d61d8327deb882cf99 (这里用的是MD5)

是不是就不能马上读出来信息内容呢!

2)数据的完整性 -> 防止数据被更改

例如我与A约了在这个星期六的下午5点在某某公园相遇

而有人盗取了我的信息并修改为:

这个星期日上午9点在某某商场相遇

信息被更改的后果就是失去了我们原本传达信息的目的(这段信息失去了原本的意义) -> 既即便我们最终成功传达了这段信息,可是因为它中间被更改 导致我们无法正常交流 不能有效传达我们的想法

3)身份验证 ->  确保数据发自特定/指定的一方 以及传给特定/指定的一方

例如举一个生活例子:

我和小明在考试前窜通好作弊的方法

敲一下为A,两下为B,三下为C,四下为D

(在不考虑有他人怀疑/参与的情况下,单纯举了一个最简单的例子)

这就成为了只有我和小明懂得”暗号“,确保了这个信息一定来源于我和小明之间 以及 只有我和小明能明白

比较有名的几个加密算法的/来源应用:

公元前400年,古希腊人发明了置换密码(在下面会具体提到原理)

在第二次世界大战期间,德国军方启用“恩尼格玛”密码机

  1. 加密算法的分类:

1) 对称加密

对称加密就是发送方使用一种规则对信息进行处理,接收方需要使用相同的规则对信息进行逆向处理

对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥)

特点:算法公开、计算量小、加密速度快、加密效率高 -> 只要知道密钥 无需再计算 省时间与功夫

优点: 加解密的高速度和使用长密钥时的难破解性

缺点: 交易双方都使用同样钥匙,安全性得不到保证 -> 一旦有一方被破解 那一系列的信息都会被破解 而且需要每次/经常更新密钥并且有效保护密钥-> 成本较高

常见的对称加密算法有:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES

这里我们讲一下最简单的对称加密算法,置换密码与代换密码:

置换密码:

置换密码的原理就是把明文字母的顺序打乱

具体操作:

(加密)

明文:ABCDEFGHI

步骤一: 按照每三个字母一组,把明文分成几个组 -> ABC DEF GHI

步骤二: 把形成的组以矩阵的方式写出来 ->

ABC

DEF

GHI

步骤三:重新组合字母 (按照每一排第一个字母,第二个字母的顺序依次整理)->

ADG BEH CFI

这样我们就得到了全新的密文 -> ADGBEHCFI

(解密)

密文:ADGBEHCFI

步骤一:按照每三个字母一组,把密文分成几个组 -> ADG BEH CFI

步骤二:把形成的组以矩阵的方式写出来->

ADG

BEH

CFI

步骤三: 重新组合字母(解密运用与加密同样的方式,按照每一排第一个字母,第二个字母的顺序依次整理) ->

ABC DEF GHI

这样我们成功恢复了原来的明文 -> ABCDEFGHI

记住在对称加密算法中,解密一定是参考加密方法的!

代换密码(凯撒密码):

代换密码的原理就是把明文字母向右/左移动一个固定数目的位置

具体操作:

(加密)

明文: HELLO

步骤一:

向左还是向右移动?-> 向右

决定一个固定数目是多少 -> 在这里我就运用凯撒密码中的3

步骤二:写出对应固定数目的密码脚本 (字母向右移动3)

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

步骤三:对照字母表把对应的字母代换进去

H -> K

E -> H

L -> O

L -> O

O -> R

这样我们就得到了全新的密文 -> KHOOR

(解密)

密文: KHOOR

步骤一:拿出加密时运用的密码脚本

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

步骤二:对照密文字母表,找到对应的明文字母

K -> H

H -> E

O -> L

0 -> L

R -> O

这样我们成功恢复了原来的明文 -> HELLO

2) 非对称加密

如果说,对成加密就是发送方使用一种规则对信息进行处理,接收方需要使用相同的规则对信息进行逆向处理的话

非对称加密则是发送方与接收方利用分别不同的规则对信息进行处理!

(非对称加密算法需要两个密钥来进行加密和解密,这两个密钥分别是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥))

特点:算法强度复杂,其安全性依赖于算法与密钥

优点:因为有两个密钥,需要分别进行不同的规则去处理信息所以大幅度提高了安全性,不易破解

缺点:由于其算法复杂,而使得加密解密的速度远远低于对称加密算法,因此不适用于数据量较大的情况

常见的非对称加密算法有: RSA、DSA、ECC

其实还有HASH加密 (其实这种加密方式并不符合算法的规定-> 不算为加密算法的一种, 但是就不单独拎出来划分了 就在这科普了)

HASH加密简单来讲就是单向的加密方式,在“简易说明加密与解密的关系”中也提到加密算法应该是一个双向的而不是单向的

所以这也是为什么HASH加密 严格来讲不算作为加密算法的一种!

简单来讲加密算法就是一个带有密码的保险箱,而HASH加密就是榨汁机,有去无回

具体的加密算法原理(AES,RSA,ECC等)就再另外时间科普~~~

加密算法的重要性以及了解加密算法分类相关推荐

  1. 【安全系列之加密算法】常用安全的加密算法

    最近在做安全相关的工作,那么我们在什么情况下应该使用什么样的加密算法? 什么样的加密算法是安全的呢? 安全的基础上,性能如何呢? 这里记录一下 1.首先,为什么要加密? 数据存储和传输存在的风险: 1 ...

  2. 混沌加密算法python_基于混沌Logistic加密算法的图片加密与还原

    摘要 一种基于混沌Logistic加密算法的图片加密与还原的方法,并利用Lena图和Baboon图来验证这种加密算法的加密效果.为了能够体现该算法在图片信息加密的效果,本文还采用了普通行列置乱加密算法 ...

  3. sm2加密算法实例_实例说明加密算法

    sm2加密算法实例 Cryptography, at its most basic, is the science of using codes and ciphers to protect mess ...

  4. des加密算法python代码_python des加密算法代码(pydes模块加密)

    python加密解密模块:pyDES模块,用来提供 DES.Triple-DES 的加密算法. 专题教程: DES加密算法,DES加密解密 python des加密解密算法 例子,Python DES ...

  5. java des3加密_JAVA加密算法(3)- 对称加密算法(DES、3DES、AES)

    对称加密算法概念 加密密钥和解密密钥相同,大部分算法加密揭秘过程互逆. 特点:算法公开.(相比非对称加密)计算量小.加密速度快.效率高. 弱点:双方都使用同样的密钥,安全性得不到保证. 常用对称加密算 ...

  6. java 可逆的加密算法_java实现AES可逆加密算法

    package com.hdu.encode; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import ...

  7. 不可逆加密算法有哪些_对称加密算法和非对称加密算法

    对称加密算 对称加密算法是加密和解密时使用相同的密钥,主要用于保证数据的机密性.最具有代表性的算法是20世纪70年代IBM公司提出的DES(dataencryption standard)算法:在此基 ...

  8. 使用 BoringSSL 优化 HTTPS 加密算法选择(不同终端加密算法不同)

    前不久,一位朋友在我博客评论中,问到:类似于 Google 那样电脑访问使用 AES,手机访问使用 CHACHA20 的算法是怎么实现的(详情).最近我研究了一下这个问题,现在我的博客也支持这个特性了 ...

  9. rsa2048加密算法c语言代码,rsa加密算法c语言代码

    如何用C语言实现RSA算法? 上学期交的作业,已通过老师在运行时间上的测试 #include #include unsigned long prime1,prime2,ee; unsigned lon ...

最新文章

  1. Linux下使用service启动jar包.md
  2. JVM内存分配与垃圾回收浅析
  3. 深入浅出计算机组成原理学习笔记:高速缓存(下)-你确定你的数据更新了么?(第38讲)...
  4. 如何优雅的实现DML批量操作
  5. 回归模型和分类模型的区别
  6. openstack nova-network 的小bug的排错经历
  7. ios kvo 要引入_iOS KVO 实现原理 和 自己实现KVO
  8. Hide()方法不生效
  9. AutoCAD二次开发基础(二):曲线操作
  10. Hive教程(05)- Hive命令汇总
  11. 推荐一款.NET开源免费的图表控件ScottPlot
  12. 5814:无根树(技巧:树的直径BFS)
  13. 微信下载app,弹出出应用宝商店的解决方案
  14. 英语中与数字有关的表达方式
  15. origin基本操作
  16. 微软必应(bing)不是一个好兆头!今天你病了吗?
  17. 一阶电路实验报告心得_一阶rc电路的暂态响应实验报告分析
  18. 【Midjourney教程】设计麻瓜也能10分钟上架一套表情包
  19. MIT 18.06 +线性代数的几何意义+3Blue1Brown 笔记
  20. Lamda C++11

热门文章

  1. linux与python什么关系,如何处理Linux / Python依赖关系?
  2. 解决HTTP 414“请求URI太长”的思路
  3. pandas创建DataFrame的几种方式(建议收藏)
  4. 吐槽各大竞赛题库的优劣
  5. 二战前,请想好这些事!
  6. div内容文字自适应
  7. 洪荒:不周山上的绝世大能(一)
  8. easyui实现鼠标移到某一行,就会弹出一个提示信息效果
  9. Java程序设计 实验三
  10. 四川巴中中学2021高考成绩查询,巴中中学2021年统招分数线是多少?