开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20天,点击查看活动详情
为什么需要加密?
大家生活中肯定遇到过很多与加密相关的事情,举个最简单的来说,例如:你需要登录网页版的QQ邮箱给同事发一封邮件,登录界面会要求你输入自己的账号密码,账号那一栏是可见的,但是切换到输入密码一栏时却变成了很多个黑色的点代替。这其实就是一种保密的过程。其他人就无法得知你账号的密码。而你的账号密码信息在腾讯的数据库中“可能”也是经过加密处理的。也就是说除了你自己之外不会再有别人知道你的密码。
这些案例很多,其实都牵引出一个话题,那就是密码技术。看过很多谍战片的小伙伴一定能明白密码技术是一个多么重要的技术。小到保护个人信息安全,大到保护整个国家的安危!密码技术能解决数据机密性、完整性、不可否认性、身份验证等问题。更是毫不夸张的衍生出一门密码学(Cryptography),密码学包括编码学和密码分析学。编码学是指将密码变化的客观规律应用到密码编制上来保护重要数据。密码分析学则是对立于编码学,它是研究密码变化过程中产生的客观规律来用于密码破解的。记得我之前看过一部电影叫《模仿游戏 The Imitation Game 》就是专门讲述如何破解密码的,感兴趣的小伙伴可以看看,里面有一位非常厉害的人物就是图灵。
科普一下数据加密里常用的一些专业术语,我们一般称未加密的消息为明文,将原有数据经过一系列方法让其失去原有性质的过程称为加密,被加密的消息我们称之为密文,最后将密文转化为明文的过程则称为解密。
下面我们着重看一组公式体系,搞明白这个公式,你就清楚了加密的原理。我们定义M、C、K、E、D五个元素,分别代表如下含义:
- M:代表明文的有限集
- C:代表密文的有限集
- K:一切可能的密钥构成的密钥集
- E:加密算法
- D:解密算法
上面的这套密码还必须满足下面这些内容:
- 加密算法:EK:M->C
- 解密算法:DK:C->M
- 不管怎么样都满足:DK(EK(x))=x
一、传统加密方式
传统加密方式虽然对于现在的人类而言过于简单了,但是在那个计算机都还没出现的年代,这些加密方式可是人类智慧的结晶!
1、替代密码
替换密码主要是将明文字母表A中的每个字母用密文字母表B中的对应位字母来替换,常见的模型无外乎:移位密码、乘数密码和仿射密码等
凯撒加密就是一个典型的移位密码,传说是古罗马凯撒大帝用来保护军队重要情报发明的加密系统。移位密码其核心思想是将字母表中的字母右移k个位置。现在我们有一段明文“bob,i love you.Alice”,利用k=3的凯撒加密来加密后,密文是“ere,l oryj brx.Dolfh”
2、换位密码
换位密码又称置换密码,是根据一定的规则重新排序明文的一个方式,其特点是保持明文所有字符不变,打乱了字符原本所在的位置和次序。换位密码有列置换和周期置换两种。主要看一个列置换密码。
例如:采取密钥K=nice的列置换密码,对明文“bob,i love you”来加密
二、现代加密方式
上面的传统加密方式对于现在的信息安全来说,在安全性和易破解方面都很差,现代密码学在原有的基础上将两者结合,再加上复杂的加密过程,形成了新的加密技术。形成了对称密钥密码和非对称密钥密码两大门派。
对称密钥密码有以下几种:
- DES加密算法:采用了分组密码,使用56位长度的密钥,明文为64位分组序列,需要进行16轮加密过程,每轮都会经过负载的替换和移位操作,且每轮都会使用一个由56位密钥导出的48位子密钥最终输出与明文等长的64位密文。
- 三重DES:该方法是再DES基础上使用了两个密钥,执行三次算法。加密过程是:加密-解密-加密,解密的过程是:解密-加密-解密。该方式相较于DES具有更高的安全性。
- AES加密算法:后期随着科学技术的发展DES算法也不能适应现代密码安全性的要求,于是便诞生了AES算法,其加密过程涉及到:字节替代、行移位、列混淆、轮密钥。解密过程则对应着每一步的你操作。
- IDEA加密算法:该算法于1992年提出,是一个分组长度64位的分组密码算法,密码长度128位,同一个算法即可加密也可解密。在性能上也优于DES。
非对称/公开密钥加密有以下几种(主要解决对称密钥密码的密钥分发问题):
- Diffie-Hellman算法
- RSA算法