Last active
July 7, 2018 14:24
-
-
Save jun1st/18a39255bdb7efe7c81ef18c54f06876 to your computer and use it in GitHub Desktop.
Java decode 小程序 encryptedData
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.UnsupportedEncodingException; | |
import java.security.AlgorithmParameters; | |
import java.security.InvalidAlgorithmParameterException; | |
import java.security.InvalidKeyException; | |
import java.security.Key; | |
import java.security.NoSuchAlgorithmException; | |
import java.security.NoSuchProviderException; | |
import java.security.Security; | |
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.bouncycastle.jce.provider.BouncyCastleProvider; | |
public class AES { | |
public static boolean initialized = false; | |
/** | |
* AES解密 | |
* @param content 密文 | |
* @return | |
* @throws InvalidAlgorithmParameterException | |
* @throws NoSuchProviderException | |
*/ | |
public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { | |
initialize(); | |
try { | |
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); | |
Key sKeySpec = new SecretKeySpec(keyByte, "AES"); | |
cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 | |
byte[] result = cipher.doFinal(content); | |
return result; | |
} catch (NoSuchAlgorithmException e) { | |
e.printStackTrace(); | |
} catch (NoSuchPaddingException e) { | |
e.printStackTrace(); | |
} catch (InvalidKeyException e) { | |
e.printStackTrace(); | |
} catch (IllegalBlockSizeException e) { | |
e.printStackTrace(); | |
} catch (BadPaddingException e) { | |
e.printStackTrace(); | |
} catch (NoSuchProviderException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} catch (Exception e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
return null; | |
} | |
public static void initialize(){ | |
if (initialized) return; | |
Security.addProvider(new BouncyCastleProvider()); | |
initialized = true; | |
} | |
//生成iv | |
public static AlgorithmParameters generateIV(byte[] iv) throws Exception{ | |
AlgorithmParameters params = AlgorithmParameters.getInstance("AES"); | |
params.init(new IvParameterSpec(iv)); | |
return params; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment