前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于口令的密码(PBE)

基于口令的密码(PBE)

作者头像
程序那些事
发布2020-07-08 10:31:56
8140
发布2020-07-08 10:31:56
举报
文章被收录于专栏:程序那些事程序那些事

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

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

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

1.生成KEK密钥

使用伪随机数生成器来生成salt

将salt和用户自己的口令使用单向散列函数算法生成KEK密钥

2.生成会话密钥并加密

使用伪随机数生成器生成会话密钥CEK

使用步骤1生成的KEK密钥对会话密钥CEK进行加密,得到加密后的会话密钥

将步骤1生成的salt和步骤2生成的加密后的会话密钥保存起来,以供后面解密的时候使用。

3.加密消息

使用步骤2中生成的会话密钥CEK来对消息进行加密,从而得到加密后的消息。

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

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

1.重建KEK

使用保存的salt和用户记住的口令,根据单向散列算法重建KEK。

2.解密会话密钥

将保持的加密后的会话密钥使用步骤1生成的KEK解密,得到解密后的会话密钥

3.解密消息

使用解密后的会话密钥对加密过后的消息进行解密,得到最终消息原文。

为什么要使用salt呢?

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档