java aes pbe_JAVA对称加密算法PBE定义与用法实例分析
本文實(shí)例講述了JAVA對(duì)稱加密算法PBE定義與用法。分享給大家供大家參考,具體如下:
一 AES、DES和3DES在使用上比較一致
二 PBE算法優(yōu)點(diǎn)
三 PBE介紹
1、PBE:Password Based Encryption 基于口令加密。通過加Salt來增強(qiáng)安全性。
2、對(duì)已有算法的包裝
3、JDK和BC的實(shí)現(xiàn)
4、通過加Salt來增強(qiáng)安全性
四 常見算法
五代碼實(shí)現(xiàn)
package com.imooc.security.pbe;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import org.apache.commons.codec.binary.Base64;
public class ImoocPBE {
private static String src = "cakin24 security pbe";
public static void main(String[] args) {
jdkPBE();
}
public static void jdkPBE() {
try {
//初始化鹽
SecureRandom random = new SecureRandom();
byte[] salt = random.generateSeed(8);
//口令與密鑰
String password = "cakin24";
PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES");
Key key = factory.generateSecret(pbeKeySpec);
//加密
PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(salt, 100);
Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES");
cipher.init(Cipher.ENCRYPT_MODE, key, pbeParameterSpec);
byte[] result = cipher.doFinal(src.getBytes());
System.out.println("jdk pbe encrypt : " + Base64.encodeBase64String(result));
//解密
cipher.init(Cipher.DECRYPT_MODE, key, pbeParameterSpec);
result = cipher.doFinal(result);
System.out.println("jdk pbe decrypt : " + new String(result));
} catch (Exception e) {
e.printStackTrace();
}
}
}
六 實(shí)現(xiàn)效果
jdk pbe encrypt : UKXIqWmtrNBpJ1ayTgGWmpswSLPLel5X
jdk pbe decrypt : cakin24 security pbe
七 應(yīng)用場(chǎng)景
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:http://tools.jb51.net/password/hash_md5_sha
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
總結(jié)
以上是生活随笔為你收集整理的java aes pbe_JAVA对称加密算法PBE定义与用法实例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纳米颗粒C语言数值模拟_J.Hazard
- 下一篇: 又快又简单的sql2005分页存储过程