jsaypt是一个对源码进行加密的技术,可以包装我们在源码配置文件里面的有段的敏感信息,如用户名密码等。
他是一种加密的手段,注意加密后的密码要使用需要设置秘钥不然不能正产启动项目
<dependency>
<groupId>com.github.ulisesbocchiogroupId>
<artifactId>jasypt-spring-boot-starterartifactId>
<version>1.8version>
dependency>
使用jasypt包对密码进行加密
1)打开CMD窗口
2)将当前路径切换到jasypt包目录下:(.m2\repository\org\jasypt)
使用如下命令进行密码加密:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="password" password=fantasy algorithm=PBEWithMD5AndDES
其中input为需要加密的密码
password为加密时采用的秘钥
algorithm为加密算法,默认算法为PBEWithMD5AndDES
显示为:
E:\idea\.m2\repository\org\jasypt\jasypt\1.9.3>java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="password" password=fantasy algorithm=PBEWithMD5AndDES
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.221-b11
----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES # 加密算法
input: password #真实密码
password: fantasy # 加密用的秘钥(这个秘钥要注意保密,泄露了也就失去了源码的加密的意义)
----OUTPUT----------------------
# 注意每次生成的密码都不一样
b+lGxED5CX0CrzhqwdDkRCOyvjUQFAFX
将生成的密码,替换项目中的密码
注意格式问题
spring.datasource.password=ENC(2p9NblOkkwNqsYhDruu5TFPR1RgkL9aH)
如果是springboot项目,我们集成的代码帮我们加入了starter可以帮我们解密,不过不建议将秘钥配置到项目中。
我们运行的时候需要加入参数作为运行环境
java -jar -Djasypt.encryptor.password=${你生成的秘钥,不能泄露的秘钥} xxx.jar
在ide中使用我们要配置环境变量(vm Options)
也可以配置在西面的environment里,不过笔者的idea不显示。。。
用jar包解密:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="b+lGxED5CX0CrzhqwdDkRCOyvjUQFAFX" password=fantasy algorithm=PBEWithMD5AndDES
参数列表
input: 是生成的密码
password是我们加密的秘钥
algorithm 是加密的算法
E:\idea\.m2\repository\org\jasypt\jasypt\1.9.3>java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="b+lGxED5CX0CrzhqwdDkRCOyvjUQFAFX" password=fantasy algorithm=PBEWithMD5AndDES
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.221-b11
----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: b+lGxED5CX0CrzhqwdDkRCOyvjUQFAFX
password: fantasy
----OUTPUT----------------------
password
获得了我们原始密码password
jasypt基本信息
Jasypt 这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成 hibernate,Spring Security(Acegi)来增强密码管理。Jasypt开发团队推出了Java加密工具Jasypt 1.4,它可与Spring Framework、Hibernate和Acegi Security集成。
与项目有关的一位开发者表示,Jasypt是一个Java库,可以使开发者不需太多操作来给Java项目添加基本加密功能,而且不需要知道加密原理。
Jasypt 也即Java Simplified Encryption是Sourceforge.net上的一个开源项目。在当地时间11月23号的通告中,Jasypt 1.4的新特征包括:加密属性文件(encryptable properties files)、Spring Framework集成、加密Hibernate数据源配置、新的命令行工具、URL加密的Apache wicket集成以及升级文档。
根据Jasypt文档,该技术可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。
Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。
1、该开源项目可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信
2、还包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。
3、Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。
4、加密属性文件(encryptable properties files)、Spring work集成、加密Hibernate数据源配置、新的命令行工具、URL加密的Apache wicket集成以及升级文档。
5、Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。
坐标(如果没有相关jar包可以这个坐标下载)
<dependency>
<groupId>org.jasyptgroupId>
<artifactId>jasyptartifactId>
<version>{version}version>
dependency>