bingoohuang/blog

了解一下PBE(Password Based Encryption,基于口令加密)

Opened this issue · 0 comments

PBE算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。是一种简便的对称加密方式。

PBE算法没有密钥(秘密[对称]密钥)的概念,把密码+盐+消息摘要迭代数当做密钥了。因为密钥长短影响算法安全性,还不方便记忆,这里我们直接换成我们自己常用的密码就大大不同了,便于我们的记忆。但是单纯的密码很容易被字典法给穷举出来,所以我们这里给密码加了点“盐”,这个盐和密码组合,想破解就难了。同时我们将盐和口令合并后用消息摘要算法进行迭代很多次来构建密钥初始化向量的基本材料,使破译更加难了。
PBE算法没构建新的加密算法,就是用了我们常用的对称加密算法,例如AES,DES等算法。它是将密钥的概念转成 “口令+盐” 的方式,将不便于记忆的密钥转成便于记忆的口令。

image

例子:

Original text: This is an important message
Encrypted text: 8zfGAKAaMyB8QANyYWVlI4huFp4tdh4KOlOsIxYmeUI=
Original text after decryption: This is an important message

参考

  1. 对称加密、PBE基于密码加密、PKCS
  2. Password-based encryption (PBE)
  3. Online PBE Encryption Decryption
  4. Java实现
  5. PBE.java
  6. Go实现
  7. Jasypt Online Encryption and Decryption
  8. JAVA online Demo