⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desmgr.java

📁 陕西电信sp客户端
💻 JAVA
字号:
// ----------------------------------------------------------------------------
// $Source: /cvs/vas2006/webpro2/webpro_java/src/com/onewaveinc/portalman/webpro/security/DesMgr.java,v $
// ----------------------------------------------------------------------------
// Copyright (c) 2002 by Onewave Inc.
// ----------------------------------------------------------------------------
// $Id: DesMgr.java,v 1.1.1.1 2006/08/01 05:49:34 zhengx Exp $
// ----------------------------------------------------------------------------
// $Log: DesMgr.java,v $
// Revision 1.1.1.1  2006/08/01 05:49:34  zhengx
// no message
//
// Revision 1.1  2006/06/02 03:33:17  wuyan
// *** empty log message ***
//
// Revision 1.2  2005/12/09 08:38:12  lufang
// no message
//
// Revision 1.1  2005/12/08 10:37:42  like
// no message
//
// Revision 1.1  2003/07/28 06:30:32  zengc
// no message
//
// ----------------------------------------------------------------------------

package com.onewaveinc.portalman.webpro.security;

/**
 * <p>Title: PortalMAN SDK API Documentation</p>
 * <p>Description: OneWave Technologies., Inc. PortalMAN Value-add Management Platform 3rd Software Development Kit</p>
 * <p>Copyright: Copyright (c) 2002 </p>
 * <p>Company: OneWave Technologies., Inc.</p>
 * @author 3rd AAA & ICP Integration Developement Team
 * @version 1.5
 */

import java.util.*;
import java.io.*;
import java.security.*;
import java.math.*;

import cryptix.util.core.BI;
import cryptix.util.core.ArrayUtil;
import cryptix.util.core.Hex;
import cryptix.provider.key.*;
import xjava.security.Cipher;
import xjava.security.KeyGenerator;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class DesMgr {


//    public static String _DES = "DES/ECB/PKCS#5";
//    public static String _TRIPLEDES = "DES-EDE3/ECB/PKCS#5";

    public DesMgr() {
    }

//	public static String encrypt(String str,String theRawKey,String encryptType)throws Exception{
//
//	byte[] encyptByte = encrypt(str.getBytes(),theRawKey,encryptType);
//	String result = Hex.toString(encyptByte);
//	return result;
//	}
//
//	public static String decrypt(String str,String theRawKey,String encryptType){
//
//	byte[] decyptByte = decrypt(Hex.fromString(str),theRawKey,encryptType);
//		String result = null;
//		try {
//			result = new String(decyptByte,"GBK");
//		}catch (UnsupportedEncodingException ex) {
//		ex.printStackTrace();
//		}
//	return result;
//	}
//	private static byte[] encrypt(byte[] bytes, String serverkey,String encryptType){
//
//	byte[] ciphertext = null;
//	try{
//		RawSecretKey key = null;
//		if (serverkey.length() == 16){
//		key = new RawSecretKey("DES",Hex.fromString(serverkey));
//		}else if (serverkey.length() == 48){
//		key = new RawSecretKey("DES-EDE3",Hex.fromString(serverkey));
//		}
//		Cipher des=Cipher.getInstance(encryptType,"Cryptix");
//		des.initEncrypt(key);
//		ciphertext = des.crypt(bytes);
//	}catch (Exception e){
//		System.err.println("Caught exception " + e.toString());
//		e.printStackTrace();
//	}
//	return ciphertext;
//	}

//	private static byte[] decrypt(byte[] bytes, String serverkey,String encryptType){
//
//	byte[] ciphertext = null;
//	try{
//		RawSecretKey key = null;
//		if (serverkey.length() == 16){
//		key = new RawSecretKey("DES",Hex.fromString(serverkey));
//		}else if (serverkey.length() == 48){
//		key = new RawSecretKey("DES-EDE3",Hex.fromString(serverkey));
//		}
//		Cipher des=Cipher.getInstance(encryptType,"Cryptix");
//		des.initDecrypt(key);
//		ciphertext = des.crypt(bytes);
//
//	}catch (Exception e){
//		System.err.println("Caught exception " + e.toString());
//	}
//	return ciphertext;
//	}

//    /**
//     * description 自动生成des密钥的算法
//     * @return     16进制的des密钥字符串
//     * @throws Exception
//     */
//    public static String generateDeskey()throws Exception{
//    // DES算法要求有一个可信任的随机数源
//    SecureRandom sr = new SecureRandom();
//    // 为我们选择的DES算法生成一个KeyGenerator对象
//    KeyGenerator kg = KeyGenerator.getInstance( "DES" );
//    kg.initialize( sr );
//    // 生成密匙
//    Key key = kg.generateKey();
//    // 获取密匙数据
//    byte rawKeyData[] = key.getEncoded();
//    return Hex.toString(rawKeyData);
//    }

    private static String byte2hex(byte[] b) { //二行制转字符串
        String hs = "";
        String stmp = "";
        for (int n = 0; n < b.length; n++) {
            stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
            if (stmp.length() == 1) {
                hs = hs + "0" + stmp;
            } else {
                hs = hs + stmp;
            }
        }
        return hs.toUpperCase();
    }

    private static byte[] hexStr2ByteArr(String strIn)
            throws Exception {
        byte[] arrB = strIn.getBytes();
        int iLen = arrB.length;

        //两个字符表示一个字节,所以字节数组长度是字符串长度除以2
        byte[] arrOut = new byte[iLen / 2];
        for (int i = 0; i < iLen; i = i + 2) {
            String strTmp = new String(arrB, i, 2);
            arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);
        }
        return arrOut;
    }

    public static String encrypt(String source, String key) throws Exception {
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        String Algorithm = null;
        if (key.length() == 16) {
            Algorithm = "DES"; //定义 加密算法,可用 DES,DESede,Blowfish
        } else if (key.length() == 48) {
            Algorithm = "DESede";
        }

        String result = null;
        try {
            SecretKey deskey = new SecretKeySpec(hexStr2ByteArr(key), Algorithm);

            //加密
            javax.crypto.Cipher c1 = javax.crypto.Cipher.getInstance(Algorithm);
            c1.init(javax.crypto.Cipher.ENCRYPT_MODE, deskey);
            byte[] cipherByte = c1.doFinal(source.getBytes());
            result = byte2hex(cipherByte);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return result;
    }

    public static String decrypt(String source, String key) throws Exception {
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        String Algorithm = null;
        if (key.length() == 16) {
            Algorithm = "DES"; //定义 加密算法,可用 DES,DESede,Blowfish
        } else if (key.length() == 48) {
            Algorithm = "DESede";
        }

        String result = null;
        try {
            SecretKey deskey = new SecretKeySpec(hexStr2ByteArr(key), Algorithm);

            //解密
            javax.crypto.Cipher c1 = javax.crypto.Cipher.getInstance(Algorithm);
            c1.init(javax.crypto.Cipher.DECRYPT_MODE, deskey);
            byte[] cipherByte = c1.doFinal(hexStr2ByteArr(source));
            result = new String(cipherByte);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return result;
    }

    public static void main(String[] args) throws Exception {
//        String key=DesMgr.generateDeskey();
//    System.out.println(key);
        String test0 = "今天阴天,abc";
        String test1 = encrypt(test0, "1E5C56C5FCD86544");
        String test2 = decrypt(test1, "1E5C56C5FCD86544");
        System.out.println("test0="+test0);
        System.out.println("test1="+test1);
        System.out.println("test2="+test2);

    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -