1 什么是加密?
加密就是对明文数据按某种特殊算法进行处理,使其成为不可读的一段代码,通常称为“密文“ 密文通过”密钥“解密后还原出原来的明文,通过这样的途径可以达到保护数据不被非法人窃取、阅读的目的。
什么是加密
一个区分的简单方法就是看编码后的数据是否还能还原,能还原的是加密。
MD 5 实际上是对数据进行有损压缩,无论数据有多长,1 KB、1 Mb 还是 1 G,都会生成固定 128 位的散列值,并且 MD 5 理论上是不可能对编码后的数据进行还原的,即不可逆。
MD 5 因为其具有不可逆性、单向恒定性(相同的数据多次计算值不变)被广泛应用于文件完整性验证、口令加密以及接下来会讲到的数字签名中。
至于 BASE 64 是否算做加密方法,仁者见仁。在这里不下结论,因为 BASE 64 编码不需要密钥,且编码后的字符串任何人都可以解码出原串,所以一般不认为是加密方法。BASE 64 常用来做转码,把二进制字节序列转化为 ASCII 字符序列。
什么是加密
2 分类
加密算法一般分为对称加密和非对称加密
- 对称加密:加密和解密时使用同一个密钥。
- 优点:计算量少,速度快,效率高
- 缺点:密钥管理困难
- 非对称加密:公钥加密的数据,只有私钥能解开。私钥“加密”的数据,只有公钥能解开。
- 优点:相比之下,安全性更高
- 缺点:计算量大,速度慢,只适合对少量数据进行加密。
相关文章:
对称加密和非对称的加密 的优缺点和理解
非对称加密
3 对称加密
常见的对称加密算法有:DES、3 DES(TripleDES)和 AES。
3.1 DES
DES 算法是一种常见的分组加密算法,由IBM公司在1971年提出。DES 算法是分组加密算法的典型代表,同时也是应用最为广泛的对称加密算法。
其主要思想在于数据位的置换与移位过程,通过16次的迭代加密与最终的逆置换得出最终的密文。
DES 的解密方式只需按照加密的逆过程求解即可。由于DES 加密过程的算法是公开的,所以密钥K的保密就显得尤为重要,只有发送方与接收方采用相同的密钥进行加密解密才能获取明文数据。
相关文章:
算法科普:神秘的 DES 加密算法
DES算法
3.2 DES(TripleDES)
由于计算机运算能力的增强,原版 DES 由于密钥长度过低容易被暴力破解;3 DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
相当于是对每个数据块应用三次 DES 算法。
相关文章: 3DES
3.3 AES
AES 是高级加密标准,在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,目前已经被全世界广泛使用,同时 AES 已经成为对称密钥加密中最流行的算法之一。
AES 支持三种长度的密钥:128位,192位,256位。
相关文章:高级加密标准
3.4 为什么说对称加密,密钥管理困难?
由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解。
为了安全起见,就必须保障密钥不被泄漏,为此需要增加许额外的管理工作,比如:
- 每次加密都使用不同的密钥。
- 定期更新密钥,
- 以及,密钥更换时,如何安全的通知对方。
所以对称加密的密钥管理很困难。
4 非对称加密
常见的非对称加密算法有:RSA 、ECC、SM2
4.1 RSA
RSA 是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在 1977 年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。
该算法基于数论中的大数分解难题,即:根据数论,寻求两个大素数比较简单,而将它们的乘积分解开则极为困难。
今天只有短的 RSA 钥匙才可能被强力方式破解。到2020年为止,世界上还没有任何可靠的攻击 RSA 算法的方式。只要其钥匙的长度足够长,用 RSA 加密的信息实际上是不能被破解的。被普遍认为是目前最优秀的公钥方案之一。
RSA 既可以用于数据加密,也可以用于数字签名。已被 ISO
推荐为公钥数据加密标准。
相关文章: RSA加密算法
4.2 ECC
椭圆加密算法(ECC)是一种公钥加密体制,最初由 Koblitz 和 Miller 两人于 1985 年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性
ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如 RSA 加密算法——提供相当的或更高等级的安全。
ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制更加复杂。
优点:
- 安全性高
- 有研究表示 160 位的椭圆密钥与 1024 位的 RSA 密钥安全性相同。
- 处理速度快
- 在私钥的加密解密速度上,ecc 算法比 RSA、DSA 速度更快。
- 存储空间占用小。
- 带宽要求低
图片来源于网络,参考一下:
相关文章:椭圆加密算法
4.3 SM 2
SM 2 是国家密码管理局于 2010 年 12 月 17 日发布的椭圆曲线公钥密码算法。
基于 ECC。
在我们国家商用密码体系中被用来替换 RSA 算法。
相关文章:SM2
5 数字签名与数字证书
数字签名:
在非对称加密中,使用私钥加密一段数据(一般为发送的内容的摘要消息),这段加密数据,就称为“数字签名”。
在接受数据的一方,可以使用对应的公钥解密,以验证签名的正确性。
虽然数字签名可以被拦截,获取,但是不能被修改。
数字证书:
可信的第三方机构,给公钥颁发的证书。证明该公钥所属者的身份,避免被伪造,假冒。
相关文章:一文彻底搞懂加密、数字签名和数字证书!
6 摘要算法
摘要算法又称散列算法、哈希算法。作用是将任意长度的输入数据压缩成固定长度的数据,称为摘要。
因为任何对数据的修改都会导致摘要的改变,所以摘要算法通常用于文件完整性验证、密码存储、数字签名等领域。
参见的摘要算法有:
- MD 5:消息摘要算法 5 (Message-Digest Algorithm 5, MD 5)
- 安全散列算法(Secure Hash Algorithm)
- HMAC:散列消息认证码(Hash-based Message Authentication Code)
相关文章: 摘要算法
7 加密盐
在数据加密时,为了增加被加密数据的安全性,可以选择在数据中,添加随机字符串。这里的随机字符串,就是加密盐。
8 参考文章
浅谈常见的七种加密算法及实现
摘要算法
数字签名
如何使用私钥公钥加密
面试必问:常用的加密算法有哪些?
非对称加密
从零学习 CA 系列 (五) -- 常见非对称加密算法分析