位置: IT常识 - 正文

Jasypt加解密(jasypt加密解密)

编辑:rootadmin
Jasypt加解密 Jasypt加密Jasypt加密引言介绍整合SpringBoot引入依赖编写配置加密和解密通过Java程序获取密文和解密通过jasypt中jar包程序获取密文使用密文:ENC(密文)异常问题JCE权限问题yml中带有@引起的问题关于盐值(密钥)配置设置其他Jasypt加密引言

推荐整理分享Jasypt加解密(jasypt加密解密),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jasypt.encryptor.password,jasypt加解密异常,Jasypt加解密,jasypt加密解密,jasypt加密解密,jasypt加解密异常,Jasypt加解密,jasypt加解密异常,内容如对您有帮助,希望把文章链接给更多的朋友!

​ Jasypt也即Java Simplified Encryption是Sourceforge.net上的一个开源项目。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标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。

​ 官网:http://www.jasypt.org/

介绍

​ 配置信息只有 jasypt.encryptor.password 是必须的,配置项有:

注意:jasypt.encryptor.saltGeneratorClassname新版和旧版属性不一致jasypt.encryptor.algorithm加密算法不一致

1️⃣旧版

keyREQUIREDDEFAULT VALUEjasypt.encryptor.passwordTrue-jasypt.encryptor.algorithmFALSEPBEWithMD5AndDESjasypt.encryptor.keyObtentionlterationsFALSE1000jasypt.encryptor.poolSizeFALSE1jasypt.encryptor.providerNameFALSESunJCEjasypt.encryptor.providerClassNameFALSEnulljasypt.encryptor.saltGeneratorClassnameFALSEorg.jasypt.salt.RandomSaltGeneratorjasypt.encryptor.ivGeneratorClassnameFALSEorg.jasypt.salt.NoOplVGeneratorjasypt.encryptor.stringOutputTypeFALSEbase64jasypt.encryptor.proxyPropertySourcesFALSEfalse

2️⃣新版

keyREQUIREDDEFAULT VALUEjasypt.encryptor.passwordTrue-jasypt.encryptor.algorithmFALSEPBEWITHHMACSHA512ANDAES_256jasypt.encryptor.key-obtention-iterationsFALSE1000jasypt.encryptor.pool-sizeFALSE1jasypt.encryptor.provider-nameFALSESunJCEjasypt.encryptor.provider-class-nameFALSEnulljasypt.encryptor.salt-generator-classnameFALSEorg.jasypt.salt.RandomSaltGeneratorjasypt.encryptor.iv-generator-classnameFALSEorg.jasypt.iv.RandomIvGeneratorjasypt.encryptor.string-output-typeFALSEbase64jasypt.encryptor.proxy-property-sourcesFALSEfalsejasypt.encryptor.skip-property-sourcesFALSEempty list

3️⃣需要注意加解密的类型一致

2.1.2版本默认加密方式为:PBEWithMD5AndDES3.0.3版本默认加密方式为:PBEWITHHMACSHA512ANDAES_256当引入3.0.3依赖,却没有添加相关jasypt加解密配置,而密文通过【PBEWithMD5AndDES】来加密,启动会报错。需要切换为【PBEWITHHMACSHA512ANDAES_256】方式进行。整合SpringBoot引入依赖<!-- 方式1:引入 jasypt-spring-boot-starter --><!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --><dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.2</version></dependency><!-- 方式2:引入 jasypt-spring-boot 需在启动类添加@EnableEncryptableProperties --><dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot</artifactId> <version>2.0.0</version></dependency>编写配置jasypt: encryptor: algorithm: PBEWithMD5AndDES # 加密算法 password: cf150b74e4824146ad76e9ebe757ba76 # 使用加密密钥加密和解密通过Java程序获取密文和解密@Autowiredprivate StringEncryptor stringEncryptor;@Testpublic void test() { String secret = stringEncryptor.encrypt("root"); String decrypt = stringEncryptor.decrypt(secret); System.out.println("password明文:" + decrypt); System.out.println("password密文:" + secret);}/** * StandardPBEStringEncryptor对象的setPassword方法设置盐值(密钥) */@Testpublic void test(){ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setPassword("hello");//设置加密盐值 String secret = stringEncryptor.encrypt("root"); String decrypt = stringEncryptor.decrypt(secret); System.out.println("password明文:" + decrypt); System.out.println("password密文:" + secret);}自己封装的工具类/** * Jasypt加密解密工具类 */public class JasyptUtil { private static final String PBEWITHMD5ANDDES = "PBEWithMD5AndDES"; private static final String PBEWITHHMACSHA512ANDAES_256 = "PBEWITHHMACSHA512ANDAES_256"; /** * @param text 待加密原文 * @param crack 盐值(密钥) * @return 加密后的字符串 * @Description: Jasypt加密(PBEWithMD5AndDES) */ public static String encryptWithMD5(String text, String crack) { //1.创建加解密工具实例 StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); //2.加解密配置 EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig(); config.setAlgorithm(PBEWITHMD5ANDDES); config.setPassword(crack); encryptor.setConfig(config); //3.加密 return encryptor.encrypt(text); } /** * @param text 待解密原文 * @param crack 盐值(密钥) * @return 解密后的字符串 * @Description: Jasypt解密(PBEWithMD5AndDES) */ public static String decryptWithMD5(String text, String crack) { //1.创建加解密工具实例 StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); //2.加解密配置 EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig(); config.setAlgorithm(PBEWITHMD5ANDDES); config.setPassword(crack); encryptor.setConfig(config); //解密 return encryptor.decrypt(text); } /** * @param text 待加密的原文 * @param crack 盐值(密钥) * @return 加密后的字符串 * @Description: jasypt 加密(PBEWITHHMACSHA512ANDAES_256) */ public static String encryptWithSHA512(String text, String crack) { //1.创建加解密工具实例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); //2.加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(crack); config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); // 为减少配置文件的书写,以下都是 Jasypt 3.x 版本,配置文件默认配置 config.setKeyObtentionIterations("1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); config.setStringOutputType("base64"); encryptor.setConfig(config); //3.加密 return encryptor.encrypt(text); } /** * @param text 待解密原文 * @param crack 盐值(密钥) * @return 解密后的字符串 * @Description: jasypt 解密(PBEWITHHMACSHA512ANDAES_256) */ public static String decryptWithSHA512(String text, String crack) { //1.创建加解密工具实例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); //2.加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(crack); config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); // 为减少配置文件的书写,以下都是 Jasypt 3.x 版本,配置文件默认配置 config.setKeyObtentionIterations("1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); config.setStringOutputType("base64"); encryptor.setConfig(config); //3.解密 return encryptor.decrypt(text); }}通过jasypt中jar包程序获取密文

1️⃣添加依赖,下载好jar包到本地maven仓库后,cmd进入jasypt.jar包所在的目录

如个人本地目录:D:\Java\mvn_repository\org\jasypt\jasypt\1.9.3Jasypt加解密(jasypt加密解密)

2️⃣加密命令,参数说明:

input:需要加密的字段password:加密盐值,用来进行加密algorithm:加密方式,默认不写也行命令:java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=hello algorithm=PBEWithMD5AndDES# 输出----ENVIRONMENT-----------------Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.171-b11----ARGUMENTS-------------------algorithm: PBEWithMD5AndDESinput: rootpassword: hello----OUTPUT----------------------muiQcX1aXcMACgnq57hDDA==

3️⃣解密命令

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="aCEx6r9g2lBuGF8w/XU8wQ==" password=hello algorithm=PBEWithMD5AndDES#输出----ENVIRONMENT-----------------Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.171-b11----ARGUMENTS-------------------algorithm: PBEWithMD5AndDESinput: muiQcX1aXcMACgnq57hDDA==password: hello----OUTPUT----------------------root使用密文:ENC(密文)

1️⃣如:数据库连接加密

spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test username: root password: ENC(muiQcX1aXcMACgnq57hDDA==) # 明文=root

2️⃣重要内容加密

my: username: ENC(muiQcX1aXcMACgnq57hDDA==) # 明文=root password: ENC(muiQcX1aXcMACgnq57hDDA==) # 明文=root异常问题JCE权限问题org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception.A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine# 解决方案:查看是否是加解密类型不一致导致。或者下载:https://www.oracle.com/java/technologies/javase-jce8-downloads.html下载压缩包解压,将local_policy.jar和US_export_policy.jar替换(或粘贴进去)D:\Java\JDK8\jre\lib\security\路径下的jar包yml中带有@引起的问题yml中@是特殊字符, 含有@左右需要加单引号。jasypt 自动加密整个文件的时候,会将单引号也当做密码的一部分,这样得到的密文肯定是错的。#解决方案:直接将密码生成,然后再复制过去,不要带双引号。关于盐值(密钥)配置设置

存放位置

工程内配置文件中内部代码中存放本地某处目录下的本地文件中

传入盐值

盐值明文存放到工程内配置文件存在安全风险。

存放本地某处目录下的本地文件中(推荐)

存放内部代码中。

在程序启动时,配置参数传入。

1️⃣在程序启动时,配置参数传入。

通过启动时传入密钥【Add VM options】-Djasypt.encryptor.password=cf150b74e4824146ad76e9ebe757ba76

2️⃣命令行启动jar包时,传入命令

其他不自定义加密类的话,默认算法为 PBEWithMD5AndDES多次生成,每次生成的密码不一样。不同的密码序列,解密却可以一样。ENC前缀可改变,即自定义格式:需要添加配置jasypt: encryptor: property: prefix: "P[" suffix: "]"my: username: P[muiQcX1aXcMACgnq57hDDA==] # 明文=root password: P[muiQcX1aXcMACgnq57hDDA==] # 明文=root
本文链接地址:https://www.jiuchutong.com/zhishi/299426.html 转载请保留说明!

上一篇:猿创征文|前端之行,任重道远(来自大三学长的万字自述)(猿创设计科技有限公司)

下一篇:python web开发基础(Python web开发基础教程的心得)

  • 引爆流量----微博营销推广(引爆流量33招)

    引爆流量----微博营销推广(引爆流量33招)

  • 腾讯游戏退款全过程(腾讯游戏退款全额全过程)

    腾讯游戏退款全过程(腾讯游戏退款全额全过程)

  • 快手怎么配音别人的作品(快手怎么配音别人的作品不用录自己)

    快手怎么配音别人的作品(快手怎么配音别人的作品不用录自己)

  • 华为p40充电多少w(华为P40充电多少A)

    华为p40充电多少w(华为P40充电多少A)

  • 抖音一般发布多久开始推送(抖音一般发布多久别人就看不到了)

    抖音一般发布多久开始推送(抖音一般发布多久别人就看不到了)

  • 在拼多多上买的东西怎么退货(在拼多多上买的药是真的吗)

    在拼多多上买的东西怎么退货(在拼多多上买的药是真的吗)

  • 华为手机怎么把自己喜欢的音乐设置为手机铃声(华为手机怎么把下面三个键调出来)

    华为手机怎么把自己喜欢的音乐设置为手机铃声(华为手机怎么把下面三个键调出来)

  • 微信被对方拉黑怎么恢复(微信被对方拉黑怎么加回来)

    微信被对方拉黑怎么恢复(微信被对方拉黑怎么加回来)

  • 如何帮助好友解封微信(如何帮助好友解除限制)

    如何帮助好友解封微信(如何帮助好友解除限制)

  • 表格粘贴怎么保持原样(表格粘贴怎么保持原格式大小不变)

    表格粘贴怎么保持原样(表格粘贴怎么保持原格式大小不变)

  • 不是群主怎么删除成员(不是群主怎么删除群相册)

    不是群主怎么删除成员(不是群主怎么删除群相册)

  • 音量键回弹无力怎么办(音量键回弹无力 湿纸巾解决)

    音量键回弹无力怎么办(音量键回弹无力 湿纸巾解决)

  • 华为p30可以给苹果充电吗(华为p30可以给苹果手机反向充电吗)

    华为p30可以给苹果充电吗(华为p30可以给苹果手机反向充电吗)

  • 手机摄像头模糊不清怎么办(手机摄像头模糊怎么办不聚焦)

    手机摄像头模糊不清怎么办(手机摄像头模糊怎么办不聚焦)

  • vivoz5前面有提示灯吗(vivo手机提示)

    vivoz5前面有提示灯吗(vivo手机提示)

  • ipad mini5可以分屏么(ipad mini5可以分屏吗)

    ipad mini5可以分屏么(ipad mini5可以分屏吗)

  • vivo手机视频通话怎么美颜

    vivo手机视频通话怎么美颜

  • 怎么下载学习强国

    怎么下载学习强国

  • 手机截屏的快捷键是什么(手机截屏快捷键)

    手机截屏的快捷键是什么(手机截屏快捷键)

  • paraloo是什么型号(parallele是什么牌子)

    paraloo是什么型号(parallele是什么牌子)

  • 视频如何制作慢放(视频如何制作慢动作效果)

    视频如何制作慢放(视频如何制作慢动作效果)

  • 手机能投屏到电视吗(手机能投屏到电子教学白板)

    手机能投屏到电视吗(手机能投屏到电子教学白板)

  • 显卡驱动装到一半黑屏(显卡驱动装到一半黑屏重启不能进系统)

    显卡驱动装到一半黑屏(显卡驱动装到一半黑屏重启不能进系统)

  • Win11应用商店连不上网怎么办?Win11应用商店无法联网的解决方法(win11 应用商店)

    Win11应用商店连不上网怎么办?Win11应用商店无法联网的解决方法(win11 应用商店)

  • 更换切换中英文的快捷键(如何更改中英文切换)

    更换切换中英文的快捷键(如何更改中英文切换)

  • day10-Tomcat02

    day10-Tomcat02

  • 小微企业增值税减免政策
  • 外包人员的工资是费用吗
  • 如何确定电动车电池是新电池
  • 利用废旧物资生产设备
  • 企业养老金计算公式举例说明
  • 员工工资怎么计算公式
  • 出差补助没有发票计入什么科目
  • 在途物资可以结转成本吗
  • 子公司给母公司开票
  • 涉农产品税率
  • 股票内在价值计算公式中级财务管理
  • 现金流量表编制依据和方法
  • 个税纳税期数如何规定的 怎么选择
  • 增值税税控盘服务费可以每年都抵扣吗
  • 累计已确认收入极可能不会发生重大转回
  • 销售方开票不填开户行
  • 发票过期作废不了怎么办
  • 到银行开公司账户需要多少手续费
  • 期初存货余额在哪张表里
  • 小规模企业转为一般纳税人怎么做会计分录
  • 出口免抵退申报期限最新政策解读
  • 科研费收入如何入账?
  • linux安装常用命令
  • win11桌面图标怎么设置
  • 未开票收入跨年开票
  • 如何防御黑客入侵
  • 收到增值税进项税增量留抵退税如何列报
  • php面向对象优点,缺点
  • 房屋租赁会同
  • 什么是集成显卡长什么样
  • windows7旗舰版最新版本
  • wordpress如何使用
  • 金税三期登录不上
  • 税控抵税
  • 图片php格式怎么换成jpg
  • vue权限管理面试题
  • controller层,service层,dao
  • windows2022下载
  • css动画效果代码
  • 大前端技术
  • php 微信公众号自定义菜单
  • 电子承兑利息
  • 公积金提取条件资料
  • 房租增值税怎么计算
  • 费用按照归属的不同可分为
  • 短期投资计提跌价准备
  • 所得税汇算清缴调整项目
  • 一般纳税人报税需要填哪些表
  • 税务相关政策的解读
  • 围挡属于市政还是建筑
  • 房地产增值税可以抵扣吗
  • 企业计提固定资产折旧以什么假设为前提
  • 其他综合收益的概念
  • 先开销项发票
  • 以自营方式建造固定资产
  • 生产成本与工程施工
  • 汇算清缴亏损弥补不能自动带出该怎么办
  • 出资方式现金
  • 事业单位预收账款
  • 待处理财产损益期末结转到哪里
  • 营改增后被挂靠的企业如何做账?
  • sql语句错误提示
  • centos7如何安装yum命令
  • Ubuntu安装ssh
  • mac怎么录制
  • anddroid.process.acore进程停止什么意思
  • win7系统无法安装
  • Win7注册表怎么恢复命令
  • dosbox批处理
  • javascript编程规范
  • jquery移动节点的方法
  • javascript弹窗函数
  • jquery返回顶部
  • Android闹钟服务
  • 编写自己的linux系统
  • python面向什么编程
  • jquery中选择器分为哪三种
  • 开票网线属于哪一类
  • 税控盘登录密码和口令
  • 购房税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设