GHGL工具类代码

来源:互联网 发布:青岛十五中行知楼 编辑:程序博客网 时间:2024/06/05 08:36

1.四舍五入保留两位小数

public static double getdouble(double d){return (double)Math.round(d*100)/100;}

2.计算增减百分比

/** * 计算增减百分比 * @param x 本期 * @param y 同期 * @return */public static String toPercent(double x , double y){String rst = null;if( y == 0){rst = " ";}else{if(x-y == 0){rst = "0.00%";}else{double fen = (x - y) / y ;DecimalFormat df1 = new DecimalFormat("##.00%");rst = df1.format(fen);}}return rst;}

3.冒泡排序

/**   * 冒泡法排序<br/>   * <li>比较相邻的元素。如果第一个比第二个大,就交换他们两个。</li>   * <li>对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。</li>   * <li>针对所有的元素重复以上的步骤,除了最后一个。</li>   * <li>持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。</li>   *    * @param numbers   *            需要排序的数组   */  public static void bubbleSort(double[] numbers) {       double temp; // 记录临时中间值       int size = numbers.length; // 数组大小       for (int i = 0; i < size - 1; i++) {           for (int j = i + 1; j < size; j++) {               if (numbers[i] < numbers[j]) { // 交换两数的位置                   temp = numbers[i];                   numbers[i] = numbers[j];                   numbers[j] = temp;               }           }       }   }

4.传入 1 ,返回 001

/** * 传入 1 ,返回 001 * @param str 字符串 * @return */    public static String pullZero(String str){        if(str != null && !"".equals(str) && str.length() < 3) {            int length = str.length();            for(int i = 0; i < 3 - length; i++) {                str = "0" + str;            }            return str;        } else {            return str;        }    }

5.计算百分比

public static String goPercent(double x , double y){String rst = null;if( y == 0){rst = " ";}else{if(x == 0){rst = "0.00%";}else{double fen = x/y ;DecimalFormat df1 = new DecimalFormat("##.00%");rst = df1.format(fen);}}return rst;}

6.后台 RSA AES 加密解密工具类代码

import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.SecureRandom;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;import org.apache.log4j.Logger;public class EncryptionDecryption {static String pathKey = EncryptionDecryption.class.getClassLoader().getResource("RSAKey.txt").getPath();/** 密钥文件存储位置 */private static String RSAKeyStore = pathKey;    /**     * 日志记录器     */    public static Logger logger = Logger.getLogger(EncryptionDecryption.class);    /** * AES加密 * @param content  明文 * @param keyBytes 秘钥 * @param iv      偏移量 * @return    */    public static String AES_CBC_Encrypt(String content, byte[] keyBytes, byte[] iv){                    try{             SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");            Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");              cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));              content = URLEncoder.encode(content,"UTF-8");   //用url编码            byte[] result=cipher.doFinal(content.getBytes()); //加密            return new String(Base64.encodeBase64(result),"UTF-8");        }catch (NoSuchPaddingException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (InvalidKeyException e) {            e.printStackTrace();        } catch (IllegalBlockSizeException e) {            e.printStackTrace();        } catch (BadPaddingException e) {            e.printStackTrace();        } catch (InvalidAlgorithmParameterException e) {e.printStackTrace();}         return null;    }        /**     * AES解密     * @param content   密文     * @param keyBytes  秘钥     * @param iv        偏移量     * @return               */public static String AES_CBC_Decrypt(String content, byte[] keyBytes, byte[] iv){                    try{          content = content.replaceAll(" ", "+");        byte[] decryptBaseData=Base64.decodeBase64(content.getBytes("utf-8"));            SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");            Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");              cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));              byte[] result=cipher.doFinal(decryptBaseData);              return URLDecoder.decode(new String(result),"utf-8");          } catch (NoSuchPaddingException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (InvalidKeyException e) {            e.printStackTrace();        } catch (IllegalBlockSizeException e) {            e.printStackTrace();        } catch (BadPaddingException e) {            e.printStackTrace();        } catch (InvalidAlgorithmParameterException e) {e.printStackTrace();}           return null;      }        /**     * 字符串转为 byte[]     * @param hexString     * @return     */    public static byte[] hexStringToBytes(String hexString) {        if (hexString == null || hexString.equals("")) {            return null;        }        hexString = hexString.toUpperCase();        int length = hexString.length() / 2;        char[] hexChars = hexString.toCharArray();        byte[] d = new byte[length];        for (int i = 0; i < length; i++) {            int pos = i * 2;            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));        }        return d;    }        /**     * Convert char to byte     * @param c char     * @return byte     */    private static byte charToByte(char c) {        return (byte) "0123456789ABCDEF".indexOf(c);    }        /**     * 解密由RSA加密的AES的key 和 iv     * @param para     * @return     * @throws Exception     */    public static byte[] getValue(String param){    byte[] trueValue = null;try {if(!param.equals("") && param != null){byte[] KeyB = hexStringToBytes(param);KeyB = decrypt(getKeyPair().getPrivate(),KeyB);StringBuffer sbKey = new StringBuffer();sbKey.append(new String(KeyB));param = sbKey.reverse().toString();trueValue = URLDecoder.decode(param,"UTF-8").getBytes(); }} catch (Exception e) {//重要参数值logger.error("传入参数:" + "param: " + param);//异常说明logger.error("解密由RSA加密的AES的key 和 iv 失败,可能前台传入的aKey或者aIv为空");e.printStackTrace();}return trueValue;     }        /**     * 获取密钥文件中的公钥     * @return     */    public String getPublicKey(){    Object publicKey = null;    String publicKEY = null;try {publicKey = getKeyPair().getPublic();publicKEY = (String) publicKey.toString().subSequence(36, 293);} catch (Exception e) {e.printStackTrace();}return publicKEY;    }        /**     * RSA 生成密钥对     * @return     * @throws Exception     */public static KeyPair generateKeyPair() throws Exception {try {KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());final int KEY_SIZE = 1024;keyPairGen.initialize(KEY_SIZE, new SecureRandom());KeyPair keyPair = keyPairGen.generateKeyPair();FileOutputStream fos = new FileOutputStream(RSAKeyStore);ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(keyPair);oos.close();fos.close();return keyPair;} catch (Exception e) {throw new Exception(e.getMessage());}}/** * 获取密钥对 * @return * @throws Exception */public static KeyPair getKeyPair() throws Exception {FileInputStream fis = new FileInputStream(RSAKeyStore);ObjectInputStream oos = new ObjectInputStream(fis);KeyPair kp = (KeyPair) oos.readObject();oos.close();fis.close();return kp;}/** * 解密 * @param pk * @param raw * @return * @throws Exception */@SuppressWarnings("static-access")private static byte[] decrypt(PrivateKey pk, byte[] raw) {try {Cipher cipher = Cipher.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());cipher.init(cipher.DECRYPT_MODE, pk);int blockSize = cipher.getBlockSize();ByteArrayOutputStream bout = new ByteArrayOutputStream(64);int j = 0;while (raw.length - j * blockSize > 0) {bout.write(cipher.doFinal(raw, j * blockSize, blockSize));j++;}return bout.toByteArray();} catch (Exception e) {e.printStackTrace();}return raw;}}


原创粉丝点击