网站首页 > 博客文章 正文
一、加解密类库Jasypt
Jasypt是一个Java类库,开发人员可以用很简单的方式完成加解密功能,不需要深入研究加解密算法原理。
- 可以方便的集成到Spring(或Spring Boot)应用程序中,与Spring Security集成也很容易
- 高安全性的,基于标准的加解密技术,可以实现单向或者双向加密。可以加密密码,普通文本,数字,二进制文件等
- 可以方便的与Hibernate集成
- 可以用于加密的应用程序(即数据源)的配置
- 特定功能的高性能加密的multi-processor/multi-core系统。
- 与任何JCE(Java Cryptography Extension)提供者使用开放的API
二、使用bat脚本生成加密串和盐值(密钥)
为了方便,简单编写了一个bat脚本方便使用。
- 使用 jasypt-1.9.2.jar中的org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI类进行加密
- input参数是待加密的字符串,password参数是加密的密钥(盐值)
- 使用PBEWithMD5AndDES算法进行加密
注意:jasypt-1.x.y.jar文件需要和bat脚本放在相同目录下。
使用示例:
注意:相同的盐值(密钥),每次加密的结果是不同的。
三、Jasypt与spring boot整合
首先引入Jasypt的maven坐标
在properties或yml文件中需要对明文进行加密的地方的地方,使用ENC()包裹,如原值:"happy family",加密后使用“ENC(密文)”替换。
为了方便测试,在properties或yml文件中,还需要做如下配置
简单来说,就是在需要加密的值使用ENC(和)进行包裹,即:ENC(密文)之后像往常一样使用@Value("${properties-name}")获取该配置即可,获取的是解密之后的值。
四、如何存储盐值(密钥)更安全
本身加解密过程都是通过盐值进行处理的,所以正常情况下盐值和加密串是分开存储的。盐值应该放在系统属性、命令行或是环境变量来使用,而不是放在同一个配置文件里面。
4.1 命令行存储方式示例
java -jar xxx.jar --jasypt.encryptor.password=123456
4.2 环境变量存储方式示例
或者设置环境变量(linux):
启动命令:
java -jar xxx.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}
五、这样真的安全么?
有的同学会问这样的问题:如果的linux主机被攻陷了怎么办,黑客不就知道了密钥?
对于这个问题:我只能这么说,如果你的应用从内部被攻陷,在这个世界上没有一种加密方法是绝对安全的。这种加密方法只能做到:防君子不防小人。大家可能都听说过,某著名互联网公司将明文数据库密码上传到了github上面,导致用户信息被泄露的问题。这种加密方式,无非是将密钥与加密结果分开存放,减少个人疏忽导致的意外,增加破解难度。
如果密钥被从内部渗透暴露了,任何加密都是不安全的。就像你的组织内部有离心离德的人,无论你如何加密都不安全,你需要做的是把他找出来干掉,或者防范他加入你的组织!
写在最后
点击我的头像进入我的主页,底栏导航里还有更多技术精品合集。
本号只做持续的知识输出,希望您能关注、评论、转发!您的支持是我不竭的创作动力!让知识产生价值、让程序员改变世界!
猜你喜欢
- 2024-11-13 spring boot配置文件敏感字段加密
- 2024-11-13 Spring Boot数据库密码加密的配置方法
- 2024-11-13 Spring Boot安全之application配置信息加密
- 2024-11-13 如何在SpringBoot项目中实现加密?
- 2024-11-13 SpringBoot进阶-SpringBoot如何实现配置文件脱敏?
- 2024-11-13 加密SpringBoot配置文件技巧(加密pdf文件如何解密编辑)
- 2024-11-13 Spring Boot版本和Jasypt版本的兼容性问题?
- 2024-11-13 SpringBoot加密配置属性(springboot配置密码加密)
- 2024-11-13 SpringCloud-OAuth2(二):实战篇(oauth2.0 springcloud)
- 2024-11-13 SpringBoot 配置文件这样加密,才足够安全!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)