码迷,mamicode.com
首页 > 其他好文 > 详细

基于口令的密码(PBE)

时间:2020-04-18 10:07:02      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:start   算法   随机数生成   sed   技术   csdn   ase   散列函数   解密   

基于口令的密码(PBE)

基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法。其中加密和解密使用的是同一个密钥。

根据用户自己的口令和salt生成口令密码,我们先看下加密的过程:

技术图片

加密的过程可以分为这几步:

  1. 生成KEK密钥
  • 使用伪随机数生成器来生成salt
  • 将salt和用户自己的口令使用单向散列函数算法生成KEK密钥
  1. 生成会话密钥并加密
  • 使用伪随机数生成器生成会话密钥CEK
  • 使用步骤1生成的KEK密钥对会话密钥CEK进行加密,得到加密后的会话密钥
  • 将步骤1生成的salt和步骤2生成的加密后的会话密钥保存起来,以供后面解密的时候使用。
  1. 加密消息
  • 使用步骤2中生成的会话密钥CEK来对消息进行加密,从而得到加密后的消息。

步骤1生成的KEK并不需要保存,因为它完全可以根据salt来重构。

接下来我们再看一下解密的过程:

技术图片

  1. 重建KEK
  • 使用保存的salt和用户记住的口令,根据单向散列算法重建KEK。
  1. 解密会话密钥
  • 将保持的加密后的会话密钥使用步骤1生成的KEK解密,得到解密后的会话密钥
  1. 解密消息
  • 使用解密后的会话密钥对加密过后的消息进行解密,得到最终消息原文。

为什么要使用salt呢?

salt主要是为了防御字典攻击,因为用户自己的口令不具备随机性,很容易被暴力破解。加了salt之后,被暴力破解的难度大大加大。

更多内容请访问 http://www.flydean.com/pbe/

基于口令的密码(PBE)

标签:start   算法   随机数生成   sed   技术   csdn   ase   散列函数   解密   

原文地址:https://www.cnblogs.com/flydean/p/pbe.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!