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;}}
阅读全文
1 0
- GHGL工具类代码
- GHGL项目功能代码
- GHGL项目总结-mybatis
- GHGL项目总结-Myeclipse
- GHGL项目总结-Oracle
- GHGL项目总结-DB2
- GHGL项目总结-CA
- GHGL项目最后总结
- ReflectionUtils工具类代码
- 工具类代码
- c# 工具类代码
- android 图片工具类代码
- Spring ReflectionUtils工具类代码
- Android图片工具类代码
- 代码量统计工具类
- Java Cookie工具类代码
- 一个分页工具类代码
- Android 常用代码工具类
- HDU 6140 Hybrid Crystals(思考+上下界)
- 修建泳池
- swift中自己定义上拉刷新
- js学习笔记之闭包
- python学习--map/reduce
- GHGL工具类代码
- 【IDEA】Mybatis Plugin插件安装破解及使用
- java多个实例对象线程同步无效的原因以及解决方案
- c语言中 char* 和 unsigned char* 的区别浅析
- linux中docker安装
- KMP 小总结
- 欢迎使用CSDN-markdown编辑器
- BufferedWriter的用法
- HDU 3613 Best Reward Manacher