package com.stone.security;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
/**
* PBE算法 对称加密 password-based encryption
* @author stone
* @date 2014-03-10 23:41:35
*/
public class PBE {
static final String KEY_ALGORITHM = "PBEWithMD5AndDES";
// static byte[] salt = "xiaoyang".getBytes(); // 盐:Salt must be 8 bytes long
static byte[] salt = "哈皮aa".getBytes(); // 盐:Salt must be 8 bytes long 哈皮,在utf8中是6个字节
static int iterationCount = 888; //循环次数
static Cipher cipher;
public static void main(String[] args) throws Exception {
byte[] encrypt = encrypt("中华人民admin*&(*S&6");
System.out.println("PBE加密后:" + Arrays.toString(encrypt));
System.out.println("PBE解密后:" + decrypt(encrypt));
}
/**
* 使用PBE 算法 加密
* @return 加密后的字符数组
* @throws Exception
*/
static byte[] encrypt(String str) throws Exception {
cipher = Cipher.getInstance(KEY_ALGORITHM);
//使用SecretKeyFactory 生成key
SecretKeyFactory factory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
PBEKeySpec keySpec = new PBEKeySpec("shizongyin".toCharArray());
SecretKey key = factory.generateSecret(keySpec);
System.out.println("key:" + Arrays.toString(key.getEncoded()));
cipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(salt, iterationCount));//使用加密模式初始化 密钥
return cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
}
/**
*
* @param encrypt
* @return
* @throws Exception
*/
static String decrypt(byte[] encrypt) throws Exception {
cipher = Cipher.getInstance(KEY_ALGORITHM);
//使用SecretKeyFactory 生成key
SecretKeyFactory factory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
PBEKeySpec keySpec = new PBEKeySpec("shizongyin".toCharArray());
SecretKey key = factory.generateSecret(keySpec);
System.out.println("key:" + Arrays.toString(key.getEncoded()));
cipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(salt, iterationCount));//使用加密模式初始化 密钥
byte[] result = cipher.doFinal(encrypt); //按单部分操作加密或解密数据,或者结束一个多部分操作。
return new String(result);
}
}
分享到:
相关推荐
对称加密算法PBE(Java).rar NetBeans环境可运行 对称加密算法PBE(Java).rar NetBeans环境可运行
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
主要介绍了JAVA对称加密算法PBE定义与用法,结合实例形式分析了JAVA对称加密算法PBE的概念、原理、定义及使用方法,需要的朋友可以参考下
java 文件加密解密 DES PBE RSA DH DSA ECC 等算法代码,如有需要可直接下载
Java加密技术(三)——PBE算法 Java加密技术(四)——非对称加密算法RSA Java加密技术(五)——非对称加密算法的由来DH Java加密技术(六)——数字签名算法DSA Java加密技术(七)——非对称加密算法最高级ECC ...
包括(SHA算法,HMAC算法,DES算法,PBE算法,AES算法,RSA算法,数字签名,D-H算法等)
java的PBEWithMD5AndDES加密 C#的PBEWithMD5AndDES加密
加密算法包含:AES、DES、DH、ECDSA、MD5、PBE、RC4、RSA、ThreeDES等
WDSsoft免费源代码,java加密解密编程常用工具包 JCT 1.0,作者吴东升 常蕴秋,BlowfishTool.java封装同Blowfish对称加密算法有关的方法,包括了使用创建Blowfish密码,使用Blowfish加密、解密, 使用PBE(基于口令的...
常见的加密算法实现--Java语言编写,花费一个多月认真整理出来的可直接运行的源码文件。下载RAR文件后,对压缩包进行解压后,里面有详细的例子,导入IDEA或者ECLIPSE后,运行指定的Java文件,即可以直接使用。压缩包...
java加密技术 与单向加密算法MD5&SHA;&MAC; 对称加密算法DES&AES; PBE 算法
● HMAC(Hash Message Authentication Code,散列消息鉴别码)复杂的对称加密(DES、PBE)、非对称加密算法: ● DES(Data Encryption Standard,数据加密算法) ● PBE(Password-based encryption,基于...
文件校验2096.8 小结211第7章初等数据加密—对称加密算法2137.1 对称加密算法简述2137.2 数据加密标准—DES 2147.3 三重DES—DESede 2227.4 高级数据加密标准—AES 2277.5 国际数据加密标准—IDEA 2327.6 基于口令...
文件校验209 6.8 小结211 第7章初等数据加密—对称加密算法213 7.1 对称加密算法简述213 7.2 数据加密标准—DES 214 7.3 三重DES—DESede 222 7.4 高级数据加密标准—AES 227 7.5 国际数据加密标准—IDEA 232 7.6 ...
复杂的对称加密(DES、PBE)、非对称加密算法: ● DES(Data Encryption Standard,数据加密算法) ● PBE(Password-based encryption,基于密码验证) ● RSA(算法的名字以发明者的名字命名:Ron Rivest, ...
[JAVA加解密]DES,AES,PBE,DH,RSA,ElGamal等算法实现及DataServlet实例
JavaSecurity 使用摘要算法 Base64 MD SHA MAC对称加密 DES AES PBE非对称加密算法 DH RSA ElGamal
包含对称加密算法:DES,3DEA,AES,PBE 包含对称加密算法:DH,RAS,ElGamal 包含摘要算法:MD2,MD4,MD5,SHA1,SHA2(SHA-224,SHA-256,SHA-384,SHA-512) 数字签名算法:RSA,DSA,ECDSA 详情请查看:...
JCT 为java开发者提供实用、方便、简洁的加密和...1.0版提供Blowfish,SHA与MD5数字摘要,PBE基于口令的加密,RSA算法工具类,使这些算法更容易在编成中使用.文件包中含源码、文档、class包WDSsoft:http://www.wdssoft.com
Java 使用jasypt包辅助,实现密码加解密。本方法实现了C#版,适用于一方加密另一方解密的情况,根据默认配置改版,可在当前版本基础上自定义更改指定算法、hash迭代次数、salt生成方式等