• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

servlet/jsp 搞代码 7年前 (2018-06-18) 198次浏览 已收录 0个评论

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

DES加密封装

http://www.gaodaima.com/40417.htmlDES 加解密的封装和 使用的例子

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();    }}

欢迎大家阅读《DES 加解密的封装和 使用的例子》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:DES 加解密的封装和 使用的例子

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址