当前位置导航:炫浪网>>网络学院>>网页制作>>JSP教程

DES 加解密的封装和使用的例子


原创:[email protected] ,欢迎喜欢Java的网友加我



DES加密封装

package org.jtool.desutils;import java.security.SecureRandom;import javax.crypto.*;import javax.crypto.spec.DESKeySpec;public class DESEncrypt {    private byte[] desKey;    public DESEncrypt(byte[] desKey) {        this.desKey = desKey;    }    public byte[] doEncrypt(byte[] plainText) throws Exception {        //      DES算法要求有一个可信任的随机数源        SecureRandom sr = new SecureRandom();        byte rawKeyData[] = desKey;/* 用某种方法获得密匙数据 */        // 从原始密匙数据创建DESKeySpec对象        DESKeySpec dks = new DESKeySpec(rawKeyData);        // 创建一个密匙工厂,然后用它把DESKeySpec转换成        // 一个SecretKey对象        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");        SecretKey key = keyFactory.generateSecret(dks);        // Cipher对象实际完成加密操作        Cipher cipher = Cipher.getInstance("DES");        // 用密匙初始化Cipher对象        cipher.init(Cipher.ENCRYPT_MODE, key, sr);        // 现在,获取数据并加密        byte data[] = plainText;/* 用某种方法获取数据 */        // 正式执行加密操作        byte encryptedData[] = cipher.doFinal(data);        return encryptedData;    }}



DES解密封装

package org.jtool.desutils;import java.security.SecureRandom;import javax.crypto.*;import javax.crypto.spec.DESKeySpec;public class DESDecrypt {    private byte[] desKey;    public DESDecrypt(byte[] desKey) {        this.desKey = desKey;    }    public byte[] doDecrypt(byte[] encryptText) throws Exception {        //      DES算法要求有一个可信任的随机数源        SecureRandom sr = new SecureRandom();        byte rawKeyData[] = desKey; /* 用某种方法获取原始密匙数据 */        // 从原始密匙数据创建一个DESKeySpec对象        DESKeySpec dks = new DESKeySpec(rawKeyData);        // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成        // 一个SecretKey对象        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");        SecretKey key = keyFactory.generateSecret(dks);        // Cipher对象实际完成解密操作        Cipher cipher = Cipher.getInstance("DES");        // 用密匙初始化Cipher对象        cipher.init(Cipher.DECRYPT_MODE, key, sr);        // 现在,获取数据并解密        byte encryptedData[] = encryptText;/* 获得经过加密的数据 */        // 正式执行解密操作        byte decryptedData[] = cipher.doFinal(encryptedData);        return decryptedData;    }}



DES加解密使用样例

package org.jtool.desutils;/** *  */public class DESTest {    public static void main(String[] args) throws Exception {        String key = "ABCDEFGH";        String value = "AABBCCDDEE";        DESEncrypt desEncrypt = new DESEncrypt(key.getBytes());        byte[] encryptText = desEncrypt.doEncrypt(value.getBytes());        System.out.println("doEncrypt - " + toHexString(encryptText));        System.out.println("doEncrypt - " + new String(encryptText));        DESDecrypt desDecrypt = new DESDecrypt(key.getBytes());        byte[] decryptText = desDecrypt.doDecrypt(encryptText);        System.out.println("doDecrypt - " + new String(decryptText));        System.out.println("doDecrypt - " + toHexString(decryptText));    }    /**     * 16进制显示数据     *      * @param value 字节数组     * @return     */    public static String toHexString(byte[] value) {        String newString = "";        for (int i = 0; i < value.length; i++) {            byte b = value[i];            String str = Integer.toHexString(b);            if (str.length() > 2) {                str = str.substring(str.length() - 2);            }            if (str.length() < 2) {                str = "0" + str;            }            newString += str;        }        return newString.toUpperCase();    }}
相关内容
赞助商链接