zoukankan      html  css  js  c++  java
  • Java DES 加解密("DES/EBC/NoPadding")

    private static final Cipher DES_CIPHER;
    
    static {
        try {
            DES_CIPHER = Cipher.getInstance("DES/ECB/NoPadding");
        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
            throw Throwables.propagate(e);
        }
    }
    
    public static String encryptDES(String encryptString, String encryptKey) {
        try {
            DES_CIPHER.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(IcbcConstant.ENCODING_GBK), "DES"));
            byte[] encryptedData = DES_CIPHER.doFinal(encryptString.getBytes(IcbcConstant.ENCODING_GBK));
            return new String(encryptedData, IcbcConstant.ENCODING_GBK);
        } catch (Throwable e) {
            throw Throwables.propagate(e);
        }
    }
    
    public static String decryptDES(String decryptString, String decryptKey) {
        try {
            DES_CIPHER.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(IcbcConstant.ENCODING_GBK), "DES"));
            byte decryptedData[] = DES_CIPHER.doFinal(decryptString.getBytes(IcbcConstant.ENCODING_GBK));
            return new String(decryptedData, IcbcConstant.ENCODING_GBK);
        } catch (Throwable e) {
            throw Throwables.propagate(e);
        }
    }

    nopadding模式下的补位,此例为补空格。

     private static byte[] formatData(String str) {
            int yu = str.length() % 8;
            if (yu == 0) {
                return str.getBytes(Charset.forName(Constants.Charset));
            }
            int size = 8 - yu;
            byte[] arr = new byte[str.length() + size];
            byte[] data = str.getBytes(Charset.forName(Constants.Charset));
            int i = 0;
            for (; i < data.length; i++) {
                arr[i] = data[i];
            }
            for (int j = 0; j < size; j++, i++) {
                arr[i] = ' ';
            }
            return arr;
        }
    
        private static byte[] formatByte(byte[] arr) {
            int i = 0;
            for (; i < arr.length; i++) {
                if ((char) arr[i] == ' ') {
                    break;
                }
            }
            byte[] result = new byte[i];
            System.arraycopy(arr, 0, result, 0, i);
            return result;
        }
  • 相关阅读:
    12.SolrCloud原理
    11.SolrCloud集群环境搭建
    10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)
    9.Solr4.10.3数据导入(post.jar方式和curl方式)
    Java程序设计之最大公约数和最小公倍数
    Java程序设计之正则表达式
    Java程序设计之整数分解
    Java程序设计之裴波拉切那数列(兔子一年的数量)
    Java并发编程实例(synchronized)
    Java程序设计之合租房synchronized(二)
  • 原文地址:https://www.cnblogs.com/frankyou/p/8351818.html
Copyright © 2011-2022 走看看