之前base64加密用的是sun公司的sun.misc.BASE64Encoder/BASE64Decoder,由于后面版本更新,sun公司被oracle公司收购,加密类BASE64Encoder被org.apache.commons.codec.binary.Base64替代了。

两者加密数据的结果其实是相同的

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;import com.alibaba.fastjson.JSONObject;public class TestEncode {private static final Logger logger = LoggerFactory.getLogger(TestEncode.class); public static void main(String[] args) throws Exception {JSONObject condition = new JSONObject();condition.put("payAmount", "1");condition.put("merchantCode", "XM01");condition.put("transDesc", "选择支付渠道");condition.put("bizNo", "dadad3333");condition.put("bizType", "76");condition.put("idType", "5");condition.put("accountName", "卫涵菡");condition.put("serialNo", "2");condition.put("idNo", "131124197907242963");String encryptKey = "abc";String result1 = aesEncrypt1(condition.toJSONString(),encryptKey);String result2 = aesEncrypt2(condition.toJSONString(),encryptKey);logger.info(result1);logger.info(result2);}public static String aesEncrypt1(String content, String encryptKey) throws Exception {logger.info("加密前的数据content={}",content);return base64Encode1(aesEncryptToBytes(content, encryptKey));}public static String aesEncrypt2(String content, String encryptKey) throws Exception {logger.info("加密前的数据content={}",content);return base64Encode2(aesEncryptToBytes(content, encryptKey));}public static String base64Encode1(byte[] bytes) {return new String(new Base64().encode(bytes));}public static String base64Encode2(byte[] bytes) {return new BASE64Encoder().encode(bytes);   }public static byte[] aesEncryptToBytes(String content, String encryptKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {KeyGenerator kgen = KeyGenerator.getInstance("AES");SecureRandom random = SecureRandom.getInstance("SHA1PRNG");random.setSeed(encryptKey.getBytes());kgen.init(128, random);Cipher cipher = Cipher.getInstance("AES");cipher.init(1, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));return cipher.doFinal(content.getBytes("utf-8"));}}

BASE64Decoder替代类Base64相关推荐

  1. ECCDSA加签验签工具类, base64编码

    对传入参数, 按照key首字母降序排序 json序列化后, 进行 sha256 加密, 结果使用base64编码获取hash hash进行ECCDSA加密 package cn.box365.ipfs ...

  2. 常见加密工具类Base64、DES、AES、RSA、MD5汇总

    文章目录 引言 1.Base64加密 2.DES加密 3.AES加密 4.RSA加密 5.MD5加密 引言 项目中经常会用到Base64.DES.AES.RSA.MD5几种加解密方式,每次都要去网上搜 ...

  3. 用@Data注解的形式替代类中的setter、getter方法

    目录 1. 封装 2. @Data注解介绍 3. Lombok的使用 1. 封装 在类中,为了增强数据的安全性和隐蔽性,通常会对数据和与数据有关的方法进行封装: 封装的步骤: 1.将类中的属性设置为p ...

  4. 图片转换工具类 base64、Uri转String

    //base64格式前缀:data:image/png;base64, public class ImageUtils {//将图片转换成Base64编码的字符串public static Strin ...

  5. 3DES加密、解密工具类

    一个简单的3DES加密.解密工具类,Base64在 sun.misc.BASE64Decoder替代类有介绍 package com.w; import java.security.Key; impo ...

  6. md5、base64、RSA1024、RA2048工具类

    MD5: package com.pmtest.common.utils.sign;import java.security.MessageDigest; import org.slf4j.Logge ...

  7. java BASE64流 输出图片。

    java BASE64流 输出图片. 亲测3个请求都可用,没有测试性能问题.仅供参考 BASE64Decoder Eclipsse 类可能引用不了解决方案链接:http://blog.csdn.net ...

  8. jdk1.8以前不建议使用其自带的Base64来加解密

    JDK1.8之前的base64是内部测试使用的代码,不建议生产环境使用,而且未来可能会移除, JDK1.8提供最新可以正式使用的Base64类, 不要使用JDK中自带的sun.misc.BASE64D ...

  9. 常用的字符串加密解密工具类

    提前声明一下:此工具类忘记出处了,很抱歉,如果原创遇上了我立马上您的链接: 加密解密的工具类DataEncryptUtil: package org.util;import java.security ...

最新文章

  1. codeforces364D
  2. 【AutoML】如何使用强化学习进行模型剪枝?
  3. linux zip 开源工程,7-Zip 18.06 发布,开源数据压缩程序
  4. Codeforces Beta Round #1
  5. 混合模式商城的可经销商品池
  6. 理论基础 —— 线性表 —— 双向链表
  7. 苹果修复老旧设备中的两个 iOS 0day
  8. STM32F7通过QSPI驱动W25Q256芯片
  9. 创建shap文件的属性字段类型区别_shapefile数据文件组成
  10. 你所不知道的我国交通工程早期经历了怎样的发展?
  11. 程序人生之六:写在 2010 年最后一晚,我这两年的工作总结
  12. 深度强化学习中的对抗攻击和防御
  13. 对大学三年学习生活的总结与反思
  14. WebGL 水波及焦散(刻蚀)的渲染总结
  15. linux虚拟机关se,Centos关闭SELinux和防火墙的关闭
  16. oracle求字段中指定字符串出现个数
  17. 计算机二级ppt学什么软件,计算机二级办公软件机考试参考资料.ppt
  18. 小晶粒zsm分子筛合成表征实验报告_小晶粒ZSM-5分子筛的合成
  19. notepad++添加HEX插件,编辑歌曲ID3信息,UTF8,UTF16 encoded Unicode,添加U2020字符方法
  20. 电影《无名之辈》观后感

热门文章

  1. vue兄弟组件之间的通信的使用
  2. qsdk固定无线速率配置方法
  3. Day8 - 集合和字符串
  4. last 命令 – 显示用户历史登录情况
  5. C++学习 类定义(一)
  6. 易语言大漠如何判断游戏登录成功
  7. 如何通过评价送礼法来增加店铺评价质量,为店铺打造爆款?
  8. requestFullscreen各种浏览器全屏模式的兼容方法记录和在TV项目的应用
  9. 龙光地产补声东:数字化运营让业务插上翅膀|2021中国房地产数字峰会
  10. handoff报告各句话的含义