68 lines
2.1 KiB
Java
68 lines
2.1 KiB
Java
|
|
package com.saye.hrs.commons.encrypt;
|
|||
|
|
|
|||
|
|
import org.apache.commons.codec.binary.Base64;
|
|||
|
|
|
|||
|
|
import java.io.UnsupportedEncodingException;
|
|||
|
|
import java.security.MessageDigest;
|
|||
|
|
import java.security.NoSuchAlgorithmException;
|
|||
|
|
|
|||
|
|
import javax.crypto.Cipher;
|
|||
|
|
import javax.crypto.spec.IvParameterSpec;
|
|||
|
|
import javax.crypto.spec.SecretKeySpec;
|
|||
|
|
|
|||
|
|
public class EncryptUtil {
|
|||
|
|
|
|||
|
|
// AES ecb模式解密 key:秘钥 initVector:偏移量 encrypted:加密内容
|
|||
|
|
public static String decrypt(String key,String initVector,String encrypted) {
|
|||
|
|
try {
|
|||
|
|
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
|
|||
|
|
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
|
|||
|
|
|
|||
|
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
|
|||
|
|
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
|
|||
|
|
byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));
|
|||
|
|
|
|||
|
|
return new String(original);
|
|||
|
|
} catch (Exception ex) {
|
|||
|
|
ex.printStackTrace();
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static void main(String[] args) throws Exception {
|
|||
|
|
System.out.println(decrypt("a6xdabhysfescfbu","encryptionIntVec","oYzamqnnyJ8GG6646PDYBQ=="));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static String getSHA256Str(String str){
|
|||
|
|
MessageDigest messageDigest;
|
|||
|
|
String encodeStr = "";
|
|||
|
|
try {
|
|||
|
|
messageDigest = MessageDigest.getInstance("SHA-256");
|
|||
|
|
messageDigest.update(str.getBytes("UTF-8"));
|
|||
|
|
encodeStr = byte2Hex(messageDigest.digest());
|
|||
|
|
} catch (NoSuchAlgorithmException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
} catch (UnsupportedEncodingException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
return encodeStr;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* 将byte转为16进制
|
|||
|
|
* @param bytes
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
private static String byte2Hex(byte[] bytes){
|
|||
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|||
|
|
String temp = null;
|
|||
|
|
for (int i=0;i<bytes.length;i++){
|
|||
|
|
temp = Integer.toHexString(bytes[i] & 0xFF);
|
|||
|
|
if (temp.length()==1){
|
|||
|
|
//1得到一位的进行补0操作
|
|||
|
|
stringBuffer.append("0");
|
|||
|
|
}
|
|||
|
|
stringBuffer.append(temp);
|
|||
|
|
}
|
|||
|
|
return stringBuffer.toString();
|
|||
|
|
}
|
|||
|
|
}
|