Java AES加密解密报错 “java.security.InvalidKeyException: Illegal key size”

2023-11-01

项目中正常都会用到AES加密解密的问题,因为有的时候来不及设置公钥私钥,搞不对称加密,这种对称加密相对来说是比较方便的一个加密方式。

与Base64比,AES相对来说破解难度要更高一些,同样你也可以往里面加盐,参与加密加强密码安全程度。

但是问题也来了我们有时候用到AES加密解密会出问题,报错“java.security.InvalidKeyException: Illegal key size”,怎样排查解决出现问题的原因

一,检查原始数据以及参与加密的key
像这种最好就是debug一下,看一下参与加密的元素对不对,如果是“ Illegal key size”错误,检查一下是否长度对应的上。我们为了避免这样错误可以加一步校验:

 //这里用的Assert是spring framework提供的
 Assert.isTrue(aesKey.length == 32, "IllegalAesKey, aesKey's length must be 32");

但一般来说这种情况少一些,更多的是加密解密不出来
尤其是多个数据加密解密,有时候会出现参与加密解密的key与加密数据对应不上这种逻辑上的问题,

类似于akey,atext 加密得到 asecert
bkey,btext加密得到bsecert
结果查询的时候用bkey去解密asecert

二 在别人的的电脑(服务器)上可以正常加密解密,我的不行
这种情况更多一些,毕竟第一个错误有点太低级了。一般来说尤其是第三方接口,各个平台的开发接口对接会出现这个问题,比如微信的公共API

一般来说这涉及到关于Java版本对于AES加密的支持,以及微信AES加密的规则

微信AES加密是使用256位
Java版本部分1.8版本以及之前的一些版本的默认支持的是128位,比如我截图的1.8.0-151就不默认支持解密微信的AES

在这里插入图片描述
解决办法是去设置AES256位,有点麻烦,实际上更换Java版本就能解决问题,比如说同样是JDK8,你生产也用的是JDK8,你没必要换成更高的版本,你只需要换成JDK8里面较新的版本就能解决,因为后期的JDK8的AES支持默认为256位。

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

Java AES加密解密报错 “java.security.InvalidKeyException: Illegal key size” 的相关文章

随机推荐

  • 台湾海峡隧道工程线路初定3个方案(图)

    台湾海峡隧道工程线路初定3个方案 图 http www sina com cn 2007年04月22日01 50 新京报 3方案示意图 本报讯 昨日 第一届海峡两岸通道 桥隧 工程学术研讨会新闻发布会在福州举行 与会专家称 台湾海峡隧道工程
  • PLC驱动伺服电机、步进电机共阳极接法-20230701

    由于工作需要 需要测试一台小型伺服电机是否好坏 记录一下接线方法 设备如下 信捷XDM 60T10 C PLC 安诺机器人 57AIM30一体化伺服电机 官网找了下技术手册 可以看到这是一款24V供电的小型伺服驱动器 供电可以用手头的这款P
  • 高通平台(8917/8937/8953...) secure boot 软件配置

    以下以8917平台为例 其他平台类似 找到对应配置文件即可 1 新建临时目录 mkdir tmp cd tmp 2 复制openssl文件到临时目录 cp LA UM LINUX android vendor qcom proprietar
  • Pytorch(GPU)详细安装教程

    如果你也是为了安装Pytorch的话 然后在安装CUDA时出现上述错误时 那么就有必要往下看了 我电脑小白 自己摸索安装 一点一点搜索 然后在我不断努力下终于安装成功 最近也是在学习深度学习 把自己安装软件过程中遇到的问题很大家分享一下 在
  • Apollo CyberRT编译问题‘Socket closed‘

    Apollo 编译问题 Socket closed apollo CyberRT编译错误 错误原因 解决方法 apollo CyberRT编译错误 Server terminated abruptly error code 14 error
  • Oracle函数 获得一个UUID

    通过Oracle函数返回一个UUID create or replace function F GET UUID p length in INT return varchar2 is Result varchar2 200 说明 返回一个指
  • GitHub入门教程

    一 注册GitHub账号 GitHub官网https github com 注册之后 登录注册的邮箱验证后注册完成 二 下载Git 有Mac Windows Linux版本的 下载地址 https git scm com downloads
  • js 提示crypto is not defined

    在使用python 调用js的时候 Crypto enc UTF8 parse 引用这个函数的时候提示这个模块没有 没定义 随即 npm install crypto 但是又报错 cryptois not found 换了一些源也没用 最后
  • r语言聚类分析_R语言ggtree画圆形的树状图展示聚类分析的结果

    今天的主要内容是实现下面这幅图 做完聚类分析通常可以选择 树形图来展示聚类分析的结果 之前公众号也分享过一篇文章 如果样本数不是很多 可以选择矩形的树状图 但是样本数如果比较多 比如今天一位公众号的读者留言说他有160多个样本 这样 矩形的
  • 微信小程序------联动选择器

    2019独角兽企业重金招聘Python工程师标准 gt gt gt picker 从底部弹起的滚动选择器 现支持五种选择器 通过mode来区分 分别是普通选择器 多列选择器 时间选择器 日期选择器 省市区选择器 默认是普通选择器 先来看看效
  • VM12+CentOS6.5+hadoop2.7.3 搭建hadoop完全分布式集群

    参考 http blog csdn net gamer gyt article details 51991893 一 安装VM 12 x 下载地址 链接 http pan baidu com s 1c2KA3gW密码 3r67 二 安装Ce
  • 移动端 - 搜索组件(suggest篇)

    这一篇博客是和 search input篇 衔接的 需要的可以看上文 移动端 搜索组件 search list篇 这里我们需要去封装这么一个组件 先说一下大致的方向 1 根据父组件传入的关键字数据发送请求获取后端数据 进行模板渲染 2 处理
  • Kettle中调用用户自定义的jar包

    在使用kettle过程中 有些功能是kettle不提供的 这样就需要想办法 不过kettle中的java代码可以解决大部分问题 下边就展示使用java代码组件调用自己编写的jar包的过程 1 创建java jar包 package test
  • GL分数阶微积分

    目录 预备公式 将积分和导数统一 p lt 0表示积分 p gt 0表示导数 整数阶和分数阶混合运算 分数阶和分数阶混合运算 预备公式 z
  • javascript的window.location方法

    Response Write 或 Response Write 退后操作 Response Write
  • 备案域名绑定服务器后 提示需要备案_小程序开发需要多少钱?

    现在越来越多的企业想通过微信小程序来宣传产品 为什么小程序那么火爆呢 奥晶科技为您解答 其优点不言而喻 1 小程序建设的成本比APP建设成本低 2 小程序能紧跟市场发展潮流 随时更新功能 3 小程序用户广泛 依托微信的亿万用户 接入方便 用
  • Linux下gdb调试工具的使用

    gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具 gdb主要完成四个方面的功能 1 启动你的程序 可以按照你的自定义的要求随心所欲的运行程序 2 可让被调试的程序在你所指定的调试的断点处停住 断点可以是条件表达式 3 当程序
  • 在ubantu下cmake与make命令的简单使用

    ubantu下简单的使用cmake与make的使用 Step 1 新建一个可执行程序 首先确保你已经安装了cmake 和 g 如果没有安装 就 sudo apt get install cmake g 然后准备一个工作空间 并准备一些素材
  • 当大模型不是问题时,如何应对 LLM 的工程化落地挑战?

    几个月前 在 Thoughtworks 的内部 AIGC 研讨会里 我们一直达成了一系列一致观点 诸如于 如果没有 开源模型 降低企业应用 LLM 的成本 那么 LLM 会很快消亡 所以 我们相信开源 LLM LoRA 微调会成为企业的一种
  • Java AES加密解密报错 “java.security.InvalidKeyException: Illegal key size”

    项目中正常都会用到AES加密解密的问题 因为有的时候来不及设置公钥私钥 搞不对称加密 这种对称加密相对来说是比较方便的一个加密方式 与Base64比 AES相对来说破解难度要更高一些 同样你也可以往里面加盐 参与加密加强密码安全程度 但是问