位置: 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开发基础教程的心得)

  • 全选复制快捷键ctrl加什么(全选复制快捷键是什么)

    全选复制快捷键ctrl加什么(全选复制快捷键是什么)

  • 发过的朋友圈还可以改权限吗(发过的朋友圈还能屏蔽人吗)

    发过的朋友圈还可以改权限吗(发过的朋友圈还能屏蔽人吗)

  • 微信为什么发不出去消息(微信为什么发不了文件夹)

    微信为什么发不出去消息(微信为什么发不了文件夹)

  • 苹果手机上的小圆圈怎么关闭(苹果手机上的小圆点怎么设置)

    苹果手机上的小圆圈怎么关闭(苹果手机上的小圆点怎么设置)

  • 通过微信号添加的好友是怎么回事(通过微信号添加的好友怎么查手机号)

    通过微信号添加的好友是怎么回事(通过微信号添加的好友怎么查手机号)

  • 功率25W一天费多少电(功率25w一小时耗电量)

    功率25W一天费多少电(功率25w一小时耗电量)

  • cad布局视口锁定和解锁快捷键(cad布局视口锁定不了)

    cad布局视口锁定和解锁快捷键(cad布局视口锁定不了)

  • 手机被别人举报停机了怎么开通(手机被别人举报诈骗停机怎么办)

    手机被别人举报停机了怎么开通(手机被别人举报诈骗停机怎么办)

  • 9700f用什么主板(9700f用什么主板合适)

    9700f用什么主板(9700f用什么主板合适)

  • mpg与mp4区别(mpg和mp4哪个好)

    mpg与mp4区别(mpg和mp4哪个好)

  • qq昵称修改失败是什么原因(qq昵称修改失败是什么原因2021)

    qq昵称修改失败是什么原因(qq昵称修改失败是什么原因2021)

  • 手机翘屏是什么原因引起的(手机翘屏会越来越严重吗)

    手机翘屏是什么原因引起的(手机翘屏会越来越严重吗)

  • 微信缴纳电费怎么退(微信缴纳电费怎么开票)

    微信缴纳电费怎么退(微信缴纳电费怎么开票)

  • 分辨率跟显示器有关系吗(分辨率跟显示器关系大吗)

    分辨率跟显示器有关系吗(分辨率跟显示器关系大吗)

  • 苹果降级数据还在不在(苹果降级了还有资料吗)

    苹果降级数据还在不在(苹果降级了还有资料吗)

  • ipad后台程序怎么关

    ipad后台程序怎么关

  • 手机怎么改变浏览器兼容性(手机怎么改变浏览器默认打开方式)

    手机怎么改变浏览器兼容性(手机怎么改变浏览器默认打开方式)

  • 快手直播显示人数版本(快手直播显示人气飙升是什么事)

    快手直播显示人数版本(快手直播显示人气飙升是什么事)

  • 亲情关怀可以卸载吗(亲情关怀卸载了对方还能远程协助操作吗)

    亲情关怀可以卸载吗(亲情关怀卸载了对方还能远程协助操作吗)

  • 淘宝怎么取消开售提醒功能(淘宝怎么取消开店认证)

    淘宝怎么取消开售提醒功能(淘宝怎么取消开店认证)

  • nex3什么时候发布(nex3发布会时间)

    nex3什么时候发布(nex3发布会时间)

  • 苹果怎么流量下载150(苹果怎么流量下载200mb)

    苹果怎么流量下载150(苹果怎么流量下载200mb)

  • 抖音时间怎么调(抖音怎么调倍速)

    抖音时间怎么调(抖音怎么调倍速)

  • 快手拍视频怎么瘦脸(快手拍视频怎么自动配字幕)

    快手拍视频怎么瘦脸(快手拍视频怎么自动配字幕)

  • 如何在Excel中添加水印(如何在excel中添加选项内容)

    如何在Excel中添加水印(如何在excel中添加选项内容)

  • 畅玩7C怎么截屏(荣耀畅玩7怎么截长图)

    畅玩7C怎么截屏(荣耀畅玩7怎么截长图)

  • NLP进阶,Bert+BiLSTM情感分析实战(nlp baseline)

    NLP进阶,Bert+BiLSTM情感分析实战(nlp baseline)

  • 两处取得工资的成语
  • 跨年取得的发票怎么入账
  • 普通发票的税费额度高吗
  • 办公楼租金如何定价
  • 建筑公司劳务分包抵扣分录
  • 个体工商户可以给自己交五险一金吗
  • 购买了材料怎么做账
  • 部门独立核算管理制度
  • 建筑业的税金计税依据
  • 营改增后超市陈列费账务处理
  • 新办企业汇算清缴流程
  • 朋友挂靠公司社保
  • 分公司可以合伙吗
  • 进项发票可以不入账吗
  • 如何从百旺开票系统中导出开票明细
  • 发票记账联丢失怎么写情况说明
  • 税收分类编码选错了有事吗
  • 大众创业的后果
  • 其他货币资金的概念
  • 小规模纳税人代账多少钱一个月
  • 分公司注销总公司会计分录
  • 向职工出售住房
  • 施工现场应建立什么
  • 财务分析的起点是企业的内部分析报告
  • mac应用程序安装权限在哪找
  • 苹果mac切换桌面快捷键
  • 什么是会计科目?为什么要设置会计科目?
  • 以前年度的费用可以入在当年吗?
  • iphone如何录音转文字
  • linux模块的概念
  • neotrace.exe - neotrace是什么进程 有什么用
  • 往来款的意义
  • js16.vip
  • 收取包装物押金税率
  • 债务转换为资本
  • 企业以非货币性资产投资
  • 债务人以固定资产债务重组
  • 无运输工具承运业务的经营者适用免税政策
  • broken pipe write failed
  • 德比郡在哪
  • 薄雾笼罩着整个森林
  • php读取xml接口数据
  • 个体户需要交什么保险
  • 客户少给了钱怎么要
  • 首涂24套
  • day12-Servlet02
  • 电子产品报废清理是否缴纳教育附加税
  • 企业收取的罚款需要交企业所得税吗
  • mongodb主备配置
  • 报销业务招待费是什么凭证
  • 企业所有者权益是什么意思
  • 烟草的发票可以报销吗
  • 资金收益率的计算
  • 车船税不计入发票
  • 招待费和差旅费的区别
  • 土地增值税应纳税额
  • 职工釆暖费有何新政策
  • 公司股东投资是什么意思
  • 固定资产折旧计算方法公式大全
  • 从外面买回来的鸡蛋能孵出小鸡吗
  • 房地产开发企业与转让房地产有关的税金
  • 如何理解施工企业的周转材料
  • 隔空传送怎样使用苹果
  • Win10预览版拆弹
  • xp系统net framework 3.5
  • Linux系统中文件的文件名存储在文件所在的目录
  • slee81.exe - slee81是什么进程
  • ubuntu20关机卡在logo
  • windows 10预览版
  • 第三人称控制器在平面上老掉
  • node. js教程
  • node.js http服务器
  • nodejs安装express-g报错
  • 安卓好用的倒计时
  • javascript操作dom对象
  • js字符串函数
  • jquery过滤选择器按照过滤规则分类包括?
  • python怎么在网上赚钱
  • 甘肃省税务申报系统
  • 税务局文化建设实施方案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设