【踩坑】AES256解密失败,jasypt解密失败 最简单解决办法(本地环境)

2023-11-06

背景

最近被拉去一个新项目组, 他们用的jasypt加密方式为数据库信息加密
我拉取代码后一跑,果然报错了
Unable to decrypt: ENC(xxxx)
在试了n中方法, 包括:

  • 创建新项目使用jasypt复现
  • 写demo直接用jasypt的类加解密
  • debug看源码执行的过程
  • 换open jdk的版本
  • 在jre的包下替换java-security的两个文件
    都失败了

原因

简单说就是大概率使用的jdk版本对于加解密256有限制, 支持的是128位的加解密

1.JDK中包含有JRE(Java Runtime Environment,即:Java运行环境),JRE中包括Java虚拟机(Java Virtual Machine)、Java核心类库和支持文件,而我们今天要说的主角就在Java的核心类库中。在Java的核心类库中有一个JCE(Java Cryptography Extension),JCE是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现,所以这个是实现加密解密的重要类库。

2.在我们安装的JRE目录下有这样一个文件夹:%JAVE_HOME%\jre\lib\security(%JAVE_HOME%是自己电脑的Java路径,),其中包含有两个.jar文件:“local_policy.jar ”和“US_export_policy.jar”,也就是我们平时说的jar包,这两个jar包就是我们JCE中的核心类库了。JRE中自带的“local_policy.jar ”和“US_export_policy.jar”是支持128位密钥的加密算法,而当我们要使用256位密钥算法的时候,已经超出它的范围,无法支持,所以才会报:“java.security.InvalidKeyException: Illegal key size or default parameters”的异常。
3.AES加解密时,会使用到Java.security.*包,即jdk security,其中使用的jar包%JAVA_HOME%/jre/lib/security/local_policy.jar和%JAVA_HOME%/jre/lib/security/US_export_policy.jar有对技术出口的限制(因为美国的出口限制,Sun通过权限文件local_policy.jar、US_export_policy.jar做了相关限制),加密只有128bit,而没有限制的则有256bit。

参考来源 https://blog.csdn.net/weixin_46030885/article/details/109311131
https://blog.csdn.net/xiaopangcame/article/details/128003074

结论

换其他版本的jdk有奇效
国内镜像地址 https://www.injdk.cn/
我选择的是亚马逊的这个, Corretto. 其他的没试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【踩坑】AES256解密失败,jasypt解密失败 最简单解决办法(本地环境) 的相关文章

随机推荐

  • Web项目-Nginx项目部署

    一 Linux网络 1 网络服务 查看当前网络的状态 并启动和停止网络服务 查看ip ifconfig ip addr 修改网卡ip vim etc sysconfig network scripts ifcfg ens33 概要信息如下
  • NS-3的安装及配置

    本教程基于VM Ware 虚拟机上安装的Ubuntu20 04 一 安装 NS 3 本体 准备 安装开始之前建议大家更换一下软件源并更新一下库 这样接下来的安装会块很多 由于安装过程中需要用到一些工具 所以提前准备好 已经安装的直接下一步
  • springboot整合mysql和mongodb双数据源

    因为业务需求 需要在一个项目中同时使用myslq和mongodb数据库 在网上找了好久都没有 只有相同数据库的双数据源 当时就想如果按照相同数据库的双数据源配置分别配置myslq和mongodb 一 先看一下pom文件
  • The type or namespace name ‘****‘ could not be found (are you missing a using directive or an assemb

    引用的类库目标框架不能大于当前项目的目标框架 修改一致后即可正确编译 参考文章 https blog csdn net weixin 34254823 article details 90098028
  • Error : DEP6810 Windowsphone 真机调试错误

    Windows phone 真机调试时遇到如下错误 Error DEP6810 MdilXapCompile exe failed with error code 2001 See log file C Users Documents Vi
  • 小程序用户头像昵称,微信头像昵称填写onChooseAvatar(2022最佳实践uniapp和原生)

    官方调整公告 小程序用户头像昵称获取规则调整公告 解决方案1 如有必要场景需收集用户头像昵称 可在个人中心或设置等页面让用户完善个人资料 解决方案二 官方 微信头像昵称填写 使用方法 头像选择 需要将 button 组件 open type
  • Mac配置$JAVA_HOME

    很奇怪 在新的Mac上安装了JDK 但是并没有自动配置 JAVA HOME 导致有些需要依赖Java环境的软件启动失败 找不到JAVA HOME的路径 我们首先通过echo JAVA HOME命令看 是否配置了JAVA HOME 如果没有输
  • 序列化和反序列化二叉搜索树

    序列化和反序列化二叉搜索树 序列化是将数据结构或对象转换为一系列位的过程 以便它可以存储在文件或内存缓冲区中 或通过网络连接链路传输 以便稍后在同一个或另一个计算机环境中重建 设计一个算法来序列化和反序列化 二叉搜索树 对序列化 反序列化算
  • 解决pycharm安装好后打不开的问题

    你最近应该把带有Visual C 字样的东西卸载了吧 把 Visual C 安装回来就OK了 安装网址 https support microsoft com zh cn help 2977003 the latest supported
  • 树莓派4B下opencv3.4.0的安装测试与所有错误处理

    1 opencv3 4 0的下载 可以在树莓派的终端界面通过wegt命令下载 但下载速度可能很慢 终端输入下列代码进行下载 cd home pi Downloads wget https github com Itseez opencv a
  • Erlang数据类型的表示和实现(5)——binary

    binary 是 Erlang 中一个具有特色的数据结构 用于处理大块的 原始的 字节块 如果没有 binary 这种数据类型 在 Erlang 中处理字节流的话可能还需要像列表或元组这样的数据结构 根据之前对这些数据结构 Eterm 的描
  • VI/VIM 键盘图 及常规快捷操作

    一 VI VIM 键盘图 二 模式转换 2 1 一般模式 2 2 编辑模式 2 3 命令模式
  • EasyExcel导出图片到Excel

    EasyExcel导出图片到Excel 需要自己重新写转换器 但是1000张以下导出是没问题的 10000以上会卡顿 有意向的小伙伴可以一起讨论下 如何处理大数量的图片导出到excel import com alibaba excel co
  • GCC详解-总览

    1 GCC是什么 早期 GCC 的全拼为 GNU C Compiler 即 GUN 计划诞生的 C 语言编译器 显然最初 GCC 的定位确实只用于编译 C 语言 但经过这些年不断的迭代 GCC 的功能得到了很大的扩展 它不仅可以用来编译 C
  • 数字IC设计学习笔记_静态时序分析STA_配置STA环境2

    数字IC设计学习笔记 配置STA环境2 1 约束 Input path 和 Output path 2 时序路径组Timing path groups 3 外部属性建模 1 约束 Input path 和 Output path 约束 In
  • 【华为OD机试真题 python】识图谱新词挖掘【2023 Q1

    题目描述 识图谱新词挖掘 小华负责公司知识图谱产品 现在要通过新词挖掘完善知识图谱 新词挖掘 给出一个待挖掘文本内容字符串Content和一个词的字符串word 找到content中所有word的新词 新词 使用词word的字符排列形成的字
  • ES6入门:iterator迭代器

    迭代模式 ES6迭代器标准化接口 迭代循环 自定义迭代器 迭代器消耗 一 迭代模式 迭代模式中 通常有一个包含某种数据集合的对象 该数据可能存在一个复杂数据结构内部 而要提供一种简单的方法能够访问数据结构中每个元素 对象消费者并不需要知道如
  • 二、redis中String和List两种数据类型和应用场景

    导读 前面文章 一 深入理解redis之需要掌握的知识点 中 我们对redis需要学习的内容进行了一个梳理 从本篇文章开始 我们将要对redis中各个知识点做详细的学习和分析 本篇文章我们学习的是redis中基础数据类型String和Lis
  • matlab如何求矩阵特征值

    根据线性代数理论 特征值与特征向量只存在于方阵 如下所示为一方阵A 在matlab输入矩阵 A 1 2 4 4 0 7 9 1 3 查阅matlab help可以知道 利用eig函数可以快速求解矩阵的特征值与特征向量 格式 V D eig
  • 【踩坑】AES256解密失败,jasypt解密失败 最简单解决办法(本地环境)

    背景 最近被拉去一个新项目组 他们用的jasypt加密方式为数据库信息加密 我拉取代码后一跑 果然报错了 Unable to decrypt ENC xxxx 在试了n中方法 包括 创建新项目使用jasypt复现 写demo直接用jasyp