除了DES,我们还知道有DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法——PBE
PBE
PBE——Password-based encryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。
通过java代码实现如下:Coder类见 Java加密技术(一)
再给出一个测试类:
控制台输出:
后续我们会介绍非对称加密算法,如RSA、DSA、DH、ECC等。
PBE
PBE——Password-based encryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。
通过java代码实现如下:Coder类见 Java加密技术(一)
- import java.security.Key;
- import java.util.Random;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.PBEKeySpec;
- import javax.crypto.spec.PBEParameterSpec;
- /**
- * PBE安全编码组件
- *
- * @author 梁栋
- * @version 1.0
- * @since 1.0
- */
- public abstract class PBECoder extends Coder {
- /**
- * 支持以下任意一种算法
- *
- * <pre>
- * PBEWithMD5AndDES
- * PBEWithMD5AndTripleDES
- * PBEWithSHA1AndDESede
- * PBEWithSHA1AndRC2_40
- * </pre>
- */
- public static final String ALGORITHM = "PBEWITHMD5andDES";
- /**
- * 盐初始化
- *
- * @return
- * @throws Exception
- */
- public static byte[] initSalt() throws Exception {
- byte[] salt = new byte[8];
- Random random = new Random();
- random.nextBytes(salt);
- return salt;
- }
- /**
- * 转换密钥<br>
- *
- * @param password
- * @return
- * @throws Exception
- */
- private static Key toKey(String password) throws Exception {
- PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
- SecretKey secretKey = keyFactory.generateSecret(keySpec);
- return secretKey;
- }
- /**
- * 加密
- *
- * @param data
- * 数据
- * @param password
- * 密码
- * @param salt
- * 盐
- * @return
- * @throws Exception
- */
- public static byte[] encrypt(byte[] data, String password, byte[] salt)
- throws Exception {
- Key key = toKey(password);
- PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 100);
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
- return cipher.doFinal(data);
- }
- /**
- * 解密
- *
- * @param data
- * 数据
- * @param password
- * 密码
- * @param salt
- * 盐
- * @return
- * @throws Exception
- */
- public static byte[] decrypt(byte[] data, String password, byte[] salt)
- throws Exception {
- Key key = toKey(password);
- PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 100);
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- cipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
- return cipher.doFinal(data);
- }
- }
再给出一个测试类:
- import static org.junit.Assert.*;
- import org.junit.Test;
- /**
- *
- * @author 梁栋
- * @version 1.0
- * @since 1.0
- */
- public class PBECoderTest {
- @Test
- public void test() throws Exception {
- String inputStr = "abc";
- System.err.println("原文: " + inputStr);
- byte[] input = inputStr.getBytes();
- String pwd = "efg";
- System.err.println("密码: " + pwd);
- byte[] salt = PBECoder.initSalt();
- byte[] data = PBECoder.encrypt(input, pwd, salt);
- System.err.println("加密后: " + PBECoder.encryptBASE64(data));
- byte[] output = PBECoder.decrypt(data, pwd, salt);
- String outputStr = new String(output);
- System.err.println("解密后: " + outputStr);
- assertEquals(inputStr, outputStr);
- }
- }
控制台输出:
- 原文: abc
- 密码: efg
- 加密后: iCZ0uRtaAhE=
- 解密后: abc
后续我们会介绍非对称加密算法,如RSA、DSA、DH、ECC等。
相关推荐
Java加密技术(三)——PBE算法 Java加密技术(四)——非对称加密算法RSA Java加密技术(五)——非对称加密算法的由来DH Java加密技术(六)——数字签名算法DSA Java加密技术(七)——非对称加密算法最高级ECC ...
java 文件加密解密 DES PBE RSA DH DSA ECC 等算法代码,如有需要可直接下载
对称加密算法PBE(Java).rar NetBeans环境可运行 对称加密算法PBE(Java).rar NetBeans环境可运行
包括(SHA算法,HMAC算法,DES算法,PBE算法,AES算法,RSA算法,数字签名,D-H算法等)
PBE算法是对称加密算法的综合算法,常见算法PBEWithMD5AndDES,使用MD5和DES算法构建了PBE算法。将盐附加在口令上,通过消息摘要算法经过迭代获得构建密钥的基本材料,构建密钥后使用对称加密算法进行加密解密。 ...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
java加密技术 与单向加密算法MD5&SHA;&MAC; 对称加密算法DES&AES; PBE 算法
除了DES,我们还知道有DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法——PBE
java的PBEWithMD5AndDES加密 C#的PBEWithMD5AndDES加密
Java Jct 加密解密工具包源码,WDSsoft免费源代码,java加密解密编程常用工具包 JCT 1.0,作者吴东升 常蕴秋,BlowfishTool.java... PBETool.java封装同PBE(基于口令的加密)算法有关的方法,可用使用PBE算法加密和解密
复杂的对称加密(DES、PBE)、非对称加密算法: ● DES(Data Encryption Standard,数据加密算法) ● PBE(Password-based encryption,基于密码验证) ● RSA(算法的名字以发明者的名字命名:Ron Rivest, ...
包含对称加密算法:DES,3DEA,AES,PBE 包含对称加密算法:DH,RAS,ElGamal 包含摘要算法:MD2,MD4,MD5,SHA1,SHA2(SHA-224,SHA-256,SHA-384,SHA-512) 数字签名算法:RSA,DSA,ECDSA 详情请查看:...
主要介绍了JAVA对称加密算法PBE定义与用法,结合实例形式分析了JAVA对称加密算法PBE的概念、原理、定义及使用方法,需要的朋友可以参考下
综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...
综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...
DES PBE RSA DH DSA ECC 等算法代码
[JAVA加解密]DES,AES,PBE,DH,RSA,ElGamal等算法实现及DataServlet实例
加密算法包含:AES、DES、DH、ECDSA、MD5、PBE、RC4、RSA、ThreeDES等
常见的加密算法实现--Java语言编写,花费一个多月认真整理出来的可直接运行的源码文件。下载RAR文件后,对压缩包进行解压后,里面有详细的例子,导入IDEA或者ECLIPSE后,运行指定的Java文件,即可以直接使用。压缩包...
● HMAC(Hash Message Authentication Code,散列消息鉴别码)复杂的对称加密(DES、PBE)、非对称加密算法: ● DES(Data Encryption Standard,数据加密算法) ● PBE(Password-based encryption,基于...