您的位置:首页 > 编程语言 > Java开发

java DES 加密解密DEMO

2011-04-21 15:40 447 查看
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class DESHelper {
    /**
     * 加解密接口,根据参数flag进行加密或解密操作
     * @param data      数据字节
     * @param password  加密解密密码8位或8的倍数
     * @param flag      0:加密,1:解密
     * @return
     */
    public static byte[] doWork(byte[] data, String password,int flag) {
        try {
            SecureRandom random = new SecureRandom();
            DESKeySpec desKey = new DESKeySpec(password.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(desKey);
            Cipher cipher = Cipher.getInstance("DES");
            // 用密匙初始化Cipher对象
            if(flag == 0){
                cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
            }else{
                cipher.init(Cipher.DECRYPT_MODE, securekey, random);
            }
            return cipher.doFinal(data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * test
     * @param args
     */
    public static void main(String[] args) {
        try {
         // 需加密内容
            String str = "mobile:15810557051|type:0|content:去中山路怎么走";
            // 密码,长度要是8的倍数
            String password = "01010101";
            byte[] desResult = DESHelper.doWork(str.getBytes(), password,0);
            System.out.println("加密后密文:" + new String(desResult));
            // 直接将如上内容解密
            byte[] sourResult = DESHelper.doWork(desResult, password,1);
            System.out.println("解密后名为:" + new String(sourResult));
        } catch (Exception e1) {
            e1.printStackTrace();
        }

    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: