原创:zhouxianli1978@msn.com ,欢迎喜欢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(); }}
