本文主要是介绍基于口令的密码(PBE),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于口令的密码(PBE)
基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法。其中加密和解密使用的是同一个密钥。
根据用户自己的口令和salt生成口令密码,我们先看下加密的过程:
加密的过程可以分为这几步:
- 生成KEK密钥
- 使用伪随机数生成器来生成salt
- 将salt和用户自己的口令使用单向散列函数算法生成KEK密钥
- 生成会话密钥并加密
- 使用伪随机数生成器生成会话密钥CEK
- 使用步骤1生成的KEK密钥对会话密钥CEK进行加密,得到加密后的会话密钥
- 将步骤1生成的salt和步骤2生成的加密后的会话密钥保存起来,以供后面解密的时候使用。
- 加密消息
- 使用步骤2中生成的会话密钥CEK来对消息进行加密,从而得到加密后的消息。
步骤1生成的KEK并不需要保存,因为它完全可以根据salt来重构。
接下来我们再看一下解密的过程:
- 重建KEK
- 使用保存的salt和用户记住的口令,根据单向散列算法重建KEK。
- 解密会话密钥
- 将保持的加密后的会话密钥使用步骤1生成的KEK解密,得到解密后的会话密钥
- 解密消息
- 使用解密后的会话密钥对加密过后的消息进行解密,得到最终消息原文。
为什么要使用salt呢?
salt主要是为了防御字典攻击,因为用户自己的口令不具备随机性,很容易被暴力破解。加了salt之后,被暴力破解的难度大大加大。
更多精彩内容且看:
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
更多内容请访问 http://www.flydean.com/pbe/
这篇关于基于口令的密码(PBE)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!