对称加密算法

来源:互联网 发布:淘宝商城歌莉娅 编辑:程序博客网 时间:2024/05/20 12:20
import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.PBEParameterSpec;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;/* * 对称加密 */public class DES {public static final String src="xiaoweiba";public static void main(String[] args) throws Exception {jdkDES();jdkAES();jdkPBE();}/* * DES对称加密 */public static void jdkDES() throws Exception{//生成keyKeyGenerator keyGenerator = KeyGenerator.getInstance("DES");keyGenerator.init(new SecureRandom());SecretKey secretKey = keyGenerator.generateKey();byte[] bytesKey = secretKey.getEncoded();//key转换DESKeySpec desKeySpec = new DESKeySpec(bytesKey);SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");Key convertKeySecret = factory.generateSecret(desKeySpec);//加密Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,convertKeySecret);byte[] result = cipher.doFinal(src.getBytes());StringBuilder sb = new StringBuilder(); for (byte item : result) {            sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));        }System.out.println("jdk des encrypt:"+ sb);//解密cipher.init(Cipher.DECRYPT_MODE,convertKeySecret);result = cipher.doFinal(result);System.out.println("jdk des decrypt:"+ new String(result));}/* * AES对称加密 */public static void jdkAES() throws Exception{//生成keyKeyGenerator keyGenerator = KeyGenerator.getInstance("AES");keyGenerator.init(new SecureRandom());SecretKey secretKey = keyGenerator.generateKey();byte[] bytesKey = secretKey.getEncoded();//key转换Key key = new SecretKeySpec(bytesKey,"AES");//加密Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,key);byte[] result = cipher.doFinal(src.getBytes());//commons-codec.jarSystem.out.println("jdk des encrypt:"+Base64.encodeBase64String(result));//解密cipher.init(Cipher.DECRYPT_MODE,key);result = cipher.doFinal(result);System.out.println("jdk des decrypt:"+ new String(result));}/* * PBE对称加密 */public static void jdkPBE() throws Exception{//初始化SecureRandom random = new SecureRandom();byte[] salt = random.generateSeed(8);//口令和密钥String password = "chang";PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES");Key key = factory.generateSecret(pbeKeySpec);//加密PBEParameterSpec pbeParamterSpec = new PBEParameterSpec(salt,100);Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES");cipher.init(Cipher.ENCRYPT_MODE,key,pbeParamterSpec);byte[] result = cipher.doFinal(src.getBytes());//commons-codec.jarSystem.out.println("jdk des encrypt:"+Base64.encodeBase64String(result));//解密cipher.init(Cipher.DECRYPT_MODE,key,pbeParamterSpec);result = cipher.doFinal(result);System.out.println("jdk des decrypt:"+ new String(result));}}

原创粉丝点击