一文读懂基于口令的加密(PBE)
Password-Based-Encryption
本文主要来聊一下基于口令的加密(Pasword Based Encrytion), 我更倾向于把password翻译成为口令,这是为了和密码学当中密码区分开,这里的password不是指的某种密码体制,而是相当于容易记忆的一串字符(当然也包括那些用随机字符串所密码的)。
❝「pass·word」: a secret word or phrase that must be used to gain admission to something.
❞
对话
PEB 加密
看完上面的对话,接下来聊一聊具体PEB的过程, 对于PBE来说,用到了之前讲到过的两个东西:
- 哈希函数
- 对称加密算法
本文不会去讲具体的PBE算法,比如rfc2898当中的具体算法的描述,本文主要是聊一聊PBE的具体结构。
PBE加密过程
正如上图所示,PBE的加密过程可以分为3个步骤:
- 根据用户选择的口令和盐生成加密密钥的密钥
- 生成加密密钥并用第一步生成的加密密钥的密钥加密密钥, 这一步听起来有点绕,慢慢的理解一下吧
- 利用第二步生成的密钥加密消息,然后销毁密钥
这样,我们就完成了对于消息的加密,这里有个要求,口令是不能存在任何地方的,记在脑子里面才是最安全的,然后对于盐,和利用加密密钥加密后的密钥要存到安全的地方。
PEB解密
理解了上面的加密过程,接下来看一下解密的过程。
PEB解密
解密过程也可以分为三个步骤:
- 用户利用自己的口令和存储的盐值还原加密密钥的密钥
- 利用第一步还原的密钥解密加密密钥
- 利用第三步拿到的密钥,解密消息
这里拿到了解密的消息,这样PEB的解密过程就完成了。
总结
本文主要是介绍了PBE的整体框架,如果想要提高安全性,对于生成加密密钥的密钥的过程,也就是哈希函数的处理,可以执行多轮,实际上,在rfc当中,也是有迭代次数这个参数的,本文在描述过程当中省略了这些,如果想去看真实使用的PBE算法,需要注意一下这一点,好了,本文到这里就结束啦,希望对各位读者大佬们有所帮助。
![D)$]]1DS0MUO2UH9N5BF%KJ.jpg D)$]]1DS0MUO2UH9N5BF%KJ.jpg](https://ucc.alicdn.com/pic/developer-ecology/bf5bd010cc534d47bf317e8f733fcbd7.jpg?x-oss-process=image/resize,w_1400/format,webp)

![EK~Y_9]FM5IYUE%0H$K0CPA.png EK~Y_9]FM5IYUE%0H$K0CPA.png](https://ucc.alicdn.com/pic/developer-ecology/3fff6c83225047cfb62131fa8c6e1adf.png?x-oss-process=image/resize,w_1400/format,webp)
![7Q])NPAX{K6F[A[@XZS34W6.png 7Q])NPAX{K6F[A[@XZS34W6.png](https://ucc.alicdn.com/pic/developer-ecology/96d95803128a4e84b5ce3ed4e0b17e59.png?x-oss-process=image/resize,w_1400/format,webp)