Java代码 [url=] [/url]
- package com.paic.umap.ucm.common.utils;
-
- import java.security.MessageDigest;
-
- import javax.crypto.Cipher;
- import javax.crypto.spec.SecretKeySpec;
-
- import org.bouncycastle.util.encoders.Base64;
-
- public class LoginDesUtil {
- public static final String ALGORITHM_DES = "DESede/ECB/PKCS5Padding";
-
- public static final String ZZGJSPWDKEY = "1HH798GZDKUO2167W5GM5YNG";
-
-
-
- /**
- * 3DES加密方法
- *
- * @param value 待加密信息
- * @param desKey 密钥
- * @return 3DES加密后用Base64编码的字符串
- */
- public static String encrypt(String value, String desKey) {
- String result = null;
- try {
- SecretKeySpec key = new SecretKeySpec(desKey.getBytes(), 0, 24, "DESede");
- Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
- cipher.init(Cipher.ENCRYPT_MODE, key);
- result = new String(Base64.encode(cipher.doFinal(value.getBytes("UTF-8"))), "UTF-8");
- } catch (Exception e) {
- }
-
- return result;
-
- }
-
- /**
- * 3DES解密方法
- *
- * @param value 3DES加密后用Base64编码的字符串
- * @param desKey 密钥
- * @return 加密原文
- */
- public static String decrypt(String value, String desKey) {
- String result = null;
- try {
- SecretKeySpec key = new SecretKeySpec(desKey.getBytes(), 0, 24, "DESede");
- Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
- cipher.init(Cipher.DECRYPT_MODE, key);
- result = new String(cipher.doFinal(Base64.decode(value)), "UTF-8");
- } catch (Exception e) {
- }
-
- return result;
- }
-
- public static void main(String[] args) {
- String result="+= +=//";
- result = result.replaceAll("[+]", "%2B");
- result = result.replaceAll("[/]", "%2F");
- result = result.replaceAll("[=]", "%3D");
- result = result.replaceAll("[ ]", "%20");
- System.out.println(result);
- result = result.replaceAll("%2F", "/");
- result = result.replaceAll("%3D", "=");
- result = result.replaceAll("%20", " ");
- result = result.replaceAll("%2B", "+");
- System.out.println(result);
- System.out.println(LoginDesUtil.encryptToURL("!@#+/\\$ %^&*()[]{}【】|!金jin123", ZZGJSPWDKEY));
-
- System.out.println(LoginDesUtil.decryptToURL(LoginDesUtil.encryptToURL("!@#+/\\$ %^&*()[]{}【】|!金jin123", ZZGJSPWDKEY), ZZGJSPWDKEY));
- }
-
-
- /**
- * 3Des的key加密(建议优先考虑) ,用于加密的URL使用
- * @param value 待加密信息
- * @return 3DES加密后用Base64编码的字符串
- */
- public static String encryptToURL(String value, String key){
- String result = encrypt(value, key);
- // 将加密后字符串中“+”、“/”、“=”转换成替代字符串
- result = result.replaceAll("[+]", "%2B");
- result = result.replaceAll("[/]", "%2F");
- result = result.replaceAll("[=]", "%3D");
- result = result.replaceAll("[ ]", "%20");
- return result;
- }
-
- /**
- * 3Des使用默认的key解密URL (建议优先考虑)
- * @param value 3DES加密后用Base64编码的字符串
- * @return 加密原文
- */
- public static String decryptToURL(String value,String key){
- String result = value.replaceAll("%2B", "+");
- result = result.replaceAll("%2F", "/");
- result = result.replaceAll("%3D", "=");
- result = result.replaceAll("%20", " ");
- result = decrypt(result, key);
- return result;
- }
-
-
- /**
- * 3Des使用默认的key解密
- * @param value 待解密信息
- * @return 3DES加密后用Base64编码的字符串
- */
- public static String decryptToZZGJS(String value){
- return decrypt(value, ZZGJSPWDKEY);
- }
-
- public static String sign(String text, String sign) {
- String sha1 = null;
- try {
- MessageDigest md = MessageDigest.getInstance("SHA1");
- md.update(text.getBytes());
- sha1 = byte2string(md.digest());
- } catch (Exception e) {
- }
- return sha1;
- }
-
- private static String byte2string(byte[] data) {
- StringBuffer sb = new StringBuffer();
- char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'A', 'B', 'C', 'D', 'E', 'F' };
- for(int i = 0; i < data.length; i++) {
- char[] t = new char[2];
- t[0] = hex[(data >>> 4) & 0x0F];
- t[1] = hex[data & 0x0F];
- sb.append(t);
- }
- return sb.toString();
- }
- }
|
|