对称加密算法PBE

    xiaoxiao2021-03-25  98

    package com.imooc.security.pbe; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory; /** * 对称加密算法 * @author Bingo_Ge * */ public class ImoocPBE { private static String src = "imooc security pbe"; public static void main(String[] args) { jdkPBE(); } public static void jdkPBE() { try { //初始化盐 SecureRandom random = new SecureRandom(); byte[] salt = random.getSeed(8); //口令与密钥 String password = "imooc"; //自定义一个简单的口令 PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray()); SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES"); //实例化pbe工厂 Key key = factory.generateSecret(pbeKeySpec); //生成密钥 //加密 PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(salt, 100); //定义pbe参数,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); //此处为解密模式,还是需要用到原来的key result = cipher.doFinal(result); //得到解密后结果数组 System.out.println("jdk pbe decrypt:" + new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-21783.html

    最新回复(0)