Java实现对称解密小程序用户信息(AES-128-CBC算法)
来源:互联网 发布:超级淘宝系统下载 编辑:程序博客网 时间:2024/06/18 13:27
import java.security.Key;import java.security.NoSuchAlgorithmException;import java.security.Security;import java.util.Arrays;import javax.crypto.Cipher;import javax.crypto.SecretKey;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 DecryptUtil {// 算法名称final String KEY_ALGORITHM = "AES";// 加解密算法/模式/填充方式final String algorithmStr = "AES/CBC/PKCS7Padding";//private Key key;private Cipher cipher;public void init(byte[] keyBytes) {// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要int base = 16;if (keyBytes.length % base != 0) {int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);byte[] temp = new byte[groups * base];Arrays.fill(temp, (byte) 0);System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);keyBytes = temp;}// 初始化Security.addProvider(new BouncyCastleProvider());// 转化成JAVA的密钥格式key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);try {// 初始化ciphercipher = Cipher.getInstance(algorithmStr);} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchPaddingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 解密方法 * * @param encryptedData * 要解密的字符串 * @param keyBytes * 解密密钥 * @return */public byte[] decrypt(String encryptedDataStr, String keyBytesStr, String ivStr) {byte[] encryptedText = null;byte[] encryptedData = null;byte[] sessionkey = null;byte[] iv = null;try {sessionkey = Base64.decodeBase64(keyBytesStr);encryptedData = Base64.decodeBase64(encryptedDataStr);iv = Base64.decodeBase64(ivStr);init(sessionkey);cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));encryptedText = cipher.doFinal(encryptedData);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return encryptedText;}}
外部只需要使用这个类中的解密方法就OK
decryptUtil = new DecryptUtil();byte[] data = decryptUtil.decrypt(encryptedData, keys, iv);String dataStr = null;try {dataStr = new String(data,"utf-8");// 根据解密算法自行解密(输入参数为appId,sessionKey,encryptedData,iv,返回一个jsonObj)//System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + dataStr);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}
阅读全文
0 0
- Java实现对称解密小程序用户信息(AES-128-CBC算法)
- AES/CBC/PKCS5Padding 对称算法加解密
- java微信小程序解密AES/CBC/PKCS7Padding
- java aes解密cbc模式
- JAVA AES对称加密解密算法
- C++ 和 java 使用 AES CBC 128 加解密
- javascript实现AES加密解密(ECB&CBC)
- java AES对称加解密
- Java AES对称加密解密
- java AES对称加密解密
- php aes 128 CBC加密、解密函数
- java实现对称加密AES和DES的加密、解密
- 对称算法中AES加密解密算法
- Java实现的AES加解密程序
- AES加密解密算法的Java实现
- 用java实现AES加解密算法
- AES加密解密算法Java实现
- 对称加密算法AES------使用AES算法对文件进行加密/解密的操作(JAVA)
- SQL三表连接查询
- 实例以及详解localStorage进行本地存储
- 程序:计算1!+2!+3!+4!+.....+n!
- Lombok(1.14.8)的简单示例
- 浏览器文本显示自动替换单词间空格数量大于一的空格,替换为一个空格
- Java实现对称解密小程序用户信息(AES-128-CBC算法)
- destoon标签调用技巧
- jfreechart在linux下中文不显示或乱码的问题
- HDU 5867 Water problem 【】
- SCIM System for Cross-domain Identity Management (SCIM)
- Free DIY Tour HDU
- unable to open debugger port:java.net.SocketException以及直接运行报80端口被system占用
- iOS 计算富文本,检索网址,号码,表情,并且计算高度,设置最大行数
- spring中配置定时器