转载:Java加密技术(三)--- PBE
来源:互联网 发布:最好的流程图软件 编辑:程序博客网 时间:2024/06/05 03:48
http://blog.163.com/niwei_258/blog/static/106284882010111022226119/
再给出一个测试类:
控制台输出:
后续我们会介绍非对称加密算法,如RSA、DSA、DH、ECC等。
除了DES,我们还知道有DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法——PBE
PBE
PBE——Password-basedencryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。
通过java代码实现如下:Coder类见Java加密技术(一)
PBE
通过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; -
-
- public
abstract class PBECoder extendsCoder { -
-
public static final String "PBEWITHMD5andDES";ALGORITHM = -
-
-
public static byte[] initSalt() throwsException { -
byte[] salt new= byte[8]; -
Random random = new Random(); -
random.nextBytes(salt); -
return salt; -
} -
-
-
private static Key throwstoKey(String password) Exception { -
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray()); -
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM); -
SecretKey secretKey = keyFactory.generateSecret(keySpec); -
-
return secretKey; -
} -
-
-
public static byte[] encrypt( byte[]data, byte[]String password, 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); -
-
} -
-
-
public static byte[] decrypt( byte[]data, byte[]String password, 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); -
-
} - }
再给出一个测试类:
Java代码
- import
static org.junit.Assert.*; -
- import
org.junit.Test; -
-
- public
class PBECoderTest { -
-
@Test -
public void test() throwsException { -
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); -
} -
- }
控制台输出:
Console代码
- 原文:
abc - 密码:
efg - 加密后:
iCZ0uRtaAhE= -
- 解密后:
abc
0 0
- 转载:Java加密技术(三)--- PBE
- Java加密技术(三) PBE
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)对称加密算法PBE
- Java加密技术(三)对称加密算法PBE
- 【密钥算法】Java加密技术(三)---PBE 数据加密算法
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- Java加密技术篇(三)对称加密算法PBE
- Java加密技术(三)——PBE算法
- Java加密技术(三)——PBE算法
- android中的Application的作用
- 【转载】EJB3下使用Ehcache实现二级缓存
- 谈谈Memcached与Redis
- 【转载】Mongodb VS Hbase
- 转载:3个著名加密算法(MD5、RSA、DES)
- 转载:Java加密技术(三)--- PBE
- 转载:postgresql性能详解
- 转载:PostgreSQL学习手册(性能提升技巧)
- 转载:PostgreSQL性能优化综合案例
- 转载: PostgreSQL SQL的性能调试方法1--借助统计信息
- 转载: PostgreSQL SQL的性能调试方法2--数据库log分析
- 转载:PostgreSQL SQL的性能调试 方法3-- 查 看 执 行 计 划
- 转载:PostgreSQL SQL的性能提升
- 常见架构风格举例总结