网站首页 > 技术文章 正文
哎呀呀,昨晚我被Shiro那个CookieRememberMeManager的setCipherKey方法给坑惨了!明明它要求传入一个byte数组作为加密密钥,但是不告诉我这个数组的长度必须是16、24或32,我就一直传入一个长度为10的数组,结果它完全不报错,我半夜三点才发现问题所在,简直把我气得要吐血啊!
起因是这样的,昨晚我在使用Shiro的RememberMe功能时,需要使用CookieRememberMeManager来进行配置。其中,我需要设置加密密钥,于是我调用了CookieRememberMeManager的setCipherKey方法,并传入了一个长度为10的byte数组作为加密密钥。但是,当我运行程序后,发现记住我功能无法正常工作,经过一番排查,我才发现问题所在:原来CookieRememberMeManager的setCipherKey方法需要传入的byte数组长度必须是16、24或32,而我传入的长度为10的数组根本无法满足要求,但是它又完全不报错,导致我一直没有发现问题。
这让我非常不爽,因为我本来以为问题很简单,只需要设置加密密钥就可以了,但是却被这个细节坑了,浪费了我半夜三点的时间才发现问题所在。
那为什么需要指定长度呢,原因是在CookieRememberMeManager中使用AES算法对数据进行加密时,需要使用一个密钥来对数据进行加密和解密。AES算法要求密钥长度必须是16、24或32个字节,如果密钥长度不符合要求,则会导致加密解密失败。因此,在使用CookieRememberMeManager进行RememberMe功能的配置时,需要指定一个长度为16、24或32个字节的密钥。如果指定的密钥长度不符合要求,将会导致加密解密失败,从而影响程序的正常运行。
需要注意的是,密钥长度的不同会对加密的安全性产生影响。密钥长度越长,加密的安全性就越高,但是也会对性能和存储空间产生影响。因此,在选择密钥长度时,需要根据实际需求进行权衡和选择。
如果要使用长度为16的加密密钥,可以使用如下代码来配置CookieRememberMeManager:
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
byte[] cipherKey = "1234567890123456".getBytes();
cookieRememberMeManager.setCipherKey(cipherKey);
虽然CookieRememberMeManager可以使用自定义的加密密钥,但是为了确保安全性,建议使用随机生成的密钥。可以使用Java的SecureRandom类来生成随机密钥,以提高加密的安全性。
猜你喜欢
- 2025-05-10 金三银四,我先去阿里了,这份阿里内部Java面试神技送你们啦
- 2025-05-10 Java线程池面试要点(java线程池应用情景面试)
- 2025-05-10 面渣逆袭必看Java中高级面试指南,Github标星4.3k+!
- 2025-05-10 金蝶一面:Java基本数据类型有哪些?包装类型的常量池技术了解么
- 2025-05-10 冲了,最新IT大厂Java八股文面试背诵版
- 2025-05-10 实现前端传递参数进行加密,Java后端接收数据解密
- 2024-09-18 前端修炼之路
- 2024-09-18 Java面试-前端基础
- 2024-09-18 学Java好还是学前端好,知了堂从两者的薪资和学习过程详细分析
- 2024-09-18 前端和Java学哪个好?哪个工资更高?
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)