【Java/加解密】使用PBEWITHMD5andTripleDES算法进行加解密

代码:

package ufo;

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 PBEWITHMD5andTripleDES_Test {
    // Java 6 支持多种PBE算法,PBEWITHMD5andTripleDES是其中一种
    private static final String ALGORITHM = "PBEWITHMD5andTripleDES";

    public static void main(String... args) {
        String original="Let’s Build a Giant Airship 青海长云暗雪山";
        System.out.println("原文=\t"+original);
        
        try {
            // 生产密钥
            String password="haha168";// 口令
            PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
            SecretKeyFactory factory=SecretKeyFactory.getInstance(ALGORITHM);
            Key key =factory.generateSecret(pbeKeySpec);// 密钥,下面加密解密都要用到
            System.out.println("密钥=\t"+Base64.encodeBase64String(key.getEncoded()));
            
            // 初始化盐
            SecureRandom random=new SecureRandom();
            byte [] salt=random.generateSeed(8);
            PBEParameterSpec pbeParameterSpec=new PBEParameterSpec(salt, 100);
            
            // 加密
            Cipher cipher =Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE,key, pbeParameterSpec);
            byte[] bytes = cipher.doFinal(original.getBytes());
            String cipherTxt=Base64.encodeBase64String(bytes);
            System.out.println("密文=\t"+cipherTxt);
            
            // 解密
            cipher.init(Cipher.DECRYPT_MODE,key,pbeParameterSpec);
            bytes=cipher.doFinal(bytes);
            String plainTxt=new String(bytes);
            System.out.println("解密后=\t"+plainTxt);
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

输出:

原文=    Let’s Build a Giant Airship 青海长云暗雪山
密钥=    aGFoYTE2OA==
密文=    1X7LW1lXZDKkF9HaFOf414JkPltG7vPO26rV2DbMVgopiXGuel8PFrZM6DUy5Mab
解密后=    Let’s Build a Giant Airship 青海长云暗雪山

END

posted @ 2021-10-04 09:09  逆火狂飙  阅读(635)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东