1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      使用Java怎么實現(xiàn)一個3des加密解密工具類

      這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)使用Java怎么實現(xiàn)一個3des加密解密工具類,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

      成都創(chuàng)新互聯(lián)主營奉新網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app軟件開發(fā)公司,奉新h5成都小程序開發(fā)搭建,奉新網(wǎng)站營銷推廣歡迎奉新等地區(qū)企業(yè)咨詢

      具體如下:

      package com.gcloud.common;
      import org.apache.poi.poifs.property.Child;
      import org.bouncycastle.jce.provider.BouncyCastleProvider;
      import javax.crypto.*;
      import javax.crypto.spec.IvParameterSpec;
      import javax.crypto.spec.SecretKeySpec;
      import java.io.BufferedReader;
      import java.io.File;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.net.URL;
      import java.security.*;
      import java.security.spec.AlgorithmParameterSpec;
      /**
       * 三重數(shù)據(jù)加密算法工具類
       * Created by charlin on 2017/9/11.
       */
      public class V3DESUtil {
        //密鑰存放位置
        public static String FILENAME = "d:/3des.key";
        // 1為加密,0為解密
        private int isEncrypt = -1;
        // 加密/解密密鑰,長度為16byte或者24byte。
        private String keyStr;
        // 要加密/解密信息(解密時需為十六進制顯示的字符串)
        private String message;
        public V3DESUtil() {
        }
        public V3DESUtil(int isEncrypt, String keyStr, String message) {
          this.isEncrypt = isEncrypt;
          this.keyStr = keyStr;
          this.message = message;
        }
        //numStr = 12345678
        public String V3DESChiper(String numStr) {
          String result = null;
          try {
            Security.addProvider(new BouncyCastleProvider());
            URL url = getClass().getResource(FILENAME);
            File myFile = new File(FILENAME);
            if (!myFile.exists()) {
              return "Can't Find " + FILENAME;
            }
            try {
              BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
              while ((keyStr = in.readLine()) == null) {
                return "讀取密鑰失敗!";
              }
              in.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
            SecretKey key = new SecretKeySpec(keyStr.getBytes(), "DESede");
            result = null;
            byte[] textByte = null;
            byte[] messageByte = null;
            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding", "BC");
            AlgorithmParameterSpec spec = new IvParameterSpec(numStr.getBytes());
            if (isEncrypt == 1) {
              messageByte = message.getBytes();
              cipher.init(Cipher.ENCRYPT_MODE, key, spec);
            } else if (isEncrypt == 0) {
              messageByte = decodeHex(message);
              cipher.init(Cipher.DECRYPT_MODE, key, spec);
            } else {
              return "加解密設置錯誤,請確認輸入:1為加密;0為解密";
            }
            textByte = cipher.doFinal(messageByte);
            if (isEncrypt == 1) {
              result = encodeHex(textByte);
            } else if (isEncrypt == 0) {
              result = new String(textByte);
            }
          } catch (Exception e) {
            e.printStackTrace();
          }
          return result;
        }
        public static final String encodeHex(byte bytes[]) {
          StringBuffer buf = new StringBuffer(bytes.length * 2);
          for (int i = 0; i < bytes.length; i++) {
            if ((bytes[i] & 0xff) < 16)
              buf.append("0");
            buf.append(Long.toString(bytes[i] & 0xff, 16));
          }
          return buf.toString();
        }
        public static final byte[] decodeHex(String hex) {
          char chars[] = hex.toCharArray();
          byte bytes[] = new byte[chars.length / 2];
          int byteCount = 0;
          for (int i = 0; i < chars.length; i += 2) {
            int newByte = 0;
            newByte |= hexCharToByte(chars[i]);
            newByte <<= 4;
            newByte |= hexCharToByte(chars[i + 1]);
            bytes[byteCount] = (byte) newByte;
            byteCount++;
          }
          return bytes;
        }
        private static final byte hexCharToByte(char ch) {
          switch (ch) {
            case 48: // '0'
              return 0;
            case 49: // '1'
              return 1;
            case 50: // '2'
              return 2;
            case 51: // '3'
              return 3;
            case 52: // '4'
              return 4;
            case 53: // '5'
              return 5;
            case 54: // '6'
              return 6;
            case 55: // '7'
              return 7;
            case 56: // '8'
              return 8;
            case 57: // '9'
              return 9;
            case 97: // 'a'
              return 10;
            case 98: // 'b'
              return 11;
            case 99: // 'c'
              return 12;
            case 100: // 'd'
              return 13;
            case 101: // 'e'
              return 14;
            case 102: // 'f'
              return 15;
            case 58: // ':'
            case 59: // ';'
            case 60: // '<'
            case 61: // '='
            case 62: // '>'
            case 63: // '?'
            case 64: // '@'
            case 65: // 'A'
            case 66: // 'B'
            case 67: // 'C'
            case 68: // 'D'
            case 69: // 'E'
            case 70: // 'F'
            case 71: // 'G'
            case 72: // 'H'
            case 73: // 'I'
            case 74: // 'J'
            case 75: // 'K'
            case 76: // 'L'
            case 77: // 'M'
            case 78: // 'N'
            case 79: // 'O'
            case 80: // 'P'
            case 81: // 'Q'
            case 82: // 'R'
            case 83: // 'S'
            case 84: // 'T'
            case 85: // 'U'
            case 86: // 'V'
            case 87: // 'W'
            case 88: // 'X'
            case 89: // 'Y'
            case 90: // 'Z'
            case 91: // '['
            case 92: // '\\'
            case 93: // ']'
            case 94: // '^'
            case 95: // '_'
            case 96: // '`'
            default:
              return 0;
          }
        }
        public static String getFILENAME() {
          return FILENAME;
        }
        public int getIsEncrypt() {
          return isEncrypt;
        }
        public void setIsEncrypt(int isEncrypt) {
          this.isEncrypt = isEncrypt;
        }
        public String getKeyStr() {
          return keyStr;
        }
        public void setKeyStr(String keyStr) {
          this.keyStr = keyStr;
        }
        public String getMessage() {
          return message;
        }
        public void setMessage(String message) {
          this.message = message;
        }
        public static void main(String[] args) {
          String key = "yycg12345678901234567890";
          String oldstring = "test" + "#" + "test" + "#" + System.currentTimeMillis();
          V3DESUtil tempDesEn = new V3DESUtil(1, oldstring, key);
          String strTemp = tempDesEn.V3DESChiper("12345678");
          System.out.println("strTemp=== " + strTemp);
          V3DESUtil tempDe = new V3DESUtil(0, strTemp, key);
          String strTempDe = tempDe.V3DESChiper("12345678");
          System.out.println("strTempDe===" + strTempDe);
        }
      }

      上述就是小編為大家分享的使用Java怎么實現(xiàn)一個3des加密解密工具類了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      分享題目:使用Java怎么實現(xiàn)一個3des加密解密工具類
      URL地址:http://www.ef60e0e.cn/article/gshcgs.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        响水县| 福海县| 玛多县| 婺源县| 南雄市| 张掖市| 鸡西市| 阆中市| 平果县| 龙口市| 长沙市| 枣阳市| 青岛市| 顺义区| 精河县| 乐清市| 榆树市| 安义县| 镇雄县| 崇左市| 阿坝县| 恩平市| 玉林市| 清镇市| 临澧县| 丰城市| 竹北市| 寿阳县| 武冈市| 岳池县| 桂平市| 临邑县| 大英县| 五家渠市| 佛冈县| 洪泽县| 乐安县| 甘洛县| 乳源| 报价| 全椒县|