DES加密-java版

来源:互联网 发布:dnf总网络连接中断 编辑:程序博客网 时间:2024/06/17 13:16
import java.security.Key;import java.security.Security;import javax.crypto.Cipher;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class DES {  Key key;public DES(String str) {    setKey(str);//生成密匙}public DES() {    setKey("computer_123");}/**   * 根据参数生成KEY   */public void setKey(String strKey) {      try {       Security.addProvider(new com.sun.crypto.provider.SunJCE());      this.key = getKey(strKey.getBytes());      } catch (Exception e) {        throw new RuntimeException(            "Error initializing SqlMap class. Cause: " + e);      }}private Key getKey(byte[] arrBTmp) throws Exception {// 创建一个空的8位字节数组(默认值为0)byte[] arrB = new byte[8];// 将原始字节数组转换为8位for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {arrB[i] = arrBTmp[i];}// 生成密钥Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");return key;}/**   * 加密String明文输入,String密文输出   */public String getEncString(String strMing) {      byte[] byteMi = null;      byte[] byteMing = null;      String strMi = "";      BASE64Encoder base64en = new BASE64Encoder();      try {        byteMing = strMing.getBytes("UTF8");        byteMi = this.getEncCode(byteMing);        strMi = base64en.encode(byteMi);      } catch (Exception e) {        throw new RuntimeException(            "Error initializing SqlMap class. Cause: " + e);      } finally {        base64en = null;        byteMing = null;        byteMi = null;      }      return strMi;}/**   * 解密 以String密文输入,String明文输出   * @param strMi   * @return   */public String getDesString(String strMi) {      BASE64Decoder base64De = new BASE64Decoder();      byte[] byteMing = null;      byte[] byteMi = null;      String strMing = "";      try {        byteMi = base64De.decodeBuffer(strMi);        byteMing = this.getDesCode(byteMi);        strMing = new String(byteMing, "UTF8");      } catch (Exception e) {        throw new RuntimeException(            "Error initializing SqlMap class. Cause: " + e);      } finally {        base64De = null;        byteMing = null;        byteMi = null;      }      return strMing;}/**   * 加密以byte[]明文输入,byte[]密文输出   * @param byteS   * @return   */private byte[] getEncCode(byte[] byteS) {      byte[] byteFina = null;      Cipher cipher;      try {        cipher = Cipher.getInstance("DES");        cipher.init(Cipher.ENCRYPT_MODE, key);        byteFina = cipher.doFinal(byteS);      } catch (Exception e) {        throw new RuntimeException(            "Error initializing SqlMap class. Cause: " + e);      } finally {        cipher = null;      }      return byteFina;}/**   * 解密以byte[]密文输入,以byte[]明文输出   * @param byteD   * @return   */private byte[] getDesCode(byte[] byteD) {      Cipher cipher;      byte[] byteFina = null;      try {        cipher = Cipher.getInstance("DES");        cipher.init(Cipher.DECRYPT_MODE, key);        byteFina = cipher.doFinal(byteD);      } catch (Exception e) {        throw new RuntimeException(            "Error initializing SqlMap class. Cause: " + e);      } finally {        cipher = null;      }      return byteFina;}public static void main(String args[]) {      DES des = new DES("tom");      // 设置密钥      //des.setKey("12345678");      String str1 = "www.baidu";      //DES加密      String str2 = des.getEncString(str1);           String deStr = des.getDesString(str2);      System.out.println("密文:" + str2);      //DES解密      System.out.println("明文:" + deStr);}}

0 0
原创粉丝点击