package com.its.utils; 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 java.io.UnsupportedEncodingException; import java.security.*; public class AES256Util { private String iv; private Key keySpec; public static String DEFAULT_KEY = "qjeockd!csp#qs)x"; public AES256Util(String key) throws UnsupportedEncodingException { this.iv = key.substring(0, 16); byte[] keyBytes = new byte[16]; byte[] b = key.getBytes("UTF-8"); int len = b.length; if (len > keyBytes.length) { len = keyBytes.length; } System.arraycopy(b, 0, keyBytes, 0, len); SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES"); this.keySpec = keySpec; } // public String aesEncode2(String str) throws UnsupportedEncodingException, NoSuchAlgorithmException, // NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, // IllegalBlockSizeException, BadPaddingException{ // Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); // c.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv.getBytes())); // byte[] encrypted = c.doFinal(str.getBytes("UTF-8")); // return new String(Base64.encodeBase64(encrypted)); // } public byte[] aesEncode(String str) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException{ Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); c.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv.getBytes())); byte[] encrypted = c.doFinal(str.getBytes("UTF-8")); return encrypted; } // public String aesDecode(String str) throws UnsupportedEncodingException, NoSuchAlgorithmException, // NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, // IllegalBlockSizeException, BadPaddingException { // Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); // c.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(iv.getBytes("UTF-8"))); // byte[] byteStr = Base64.decodeBase64(str.getBytes()); // return new String(c.doFinal(byteStr),"UTF-8"); // } public static String encryptSHA256(String str) { String SHA = ""; try { MessageDigest msgDigest = MessageDigest.getInstance("SHA-256"); msgDigest.update(str.getBytes()); byte byteData[] = msgDigest.digest(); StringBuffer builder = new StringBuffer(); for (byte b : byteData) { builder.append(String.format("%02x", b)); } // for(int i=0; i < byteData.length; i++) { // builder.append(Integer.toString((byteData[i]&0xff) + 0x100, 16).substring(1)); // } SHA = builder.toString(); } catch (NoSuchAlgorithmException e) { SHA = ""; } return SHA; } }