SpringBoot实现配置文件的加密和解密

news2024/11/25 13:03:49

一、项目搭建

1.新建一个springBoot项目

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.xiao</groupId>
    <artifactId>springboot-demo001</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-demo001</name>
    <description>Demo project for Spring Boot</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.配置文件application.yml

jasypt:
  encryptor:
    password: Octv_DL1218

3.创建测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class JasyptPBEStringEncryptionUtil {

    @Resource
    private StringEncryptor stringEncryptor;

    @Test
    public void test(){
        String root=stringEncryptor.encrypt("39.106.57.234");
        System.out.println(root);
        System.out.println(stringEncryptor.decrypt("VR23Ty8MRL/i8WmhM6sBK0JSqsUDTAtpgxaEO3CkoSd6BPb6spIp0+Xfjn0xdDBf"));

    }


}

运行测试类即可

遇到的问题:

运行后老是出现错误:

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

网上的解决方案是jdk8要下载

,然后把里面的2个jar包替换到D:\java\jdk1.8\jre\lib\security即可,但是我替换之后还是报一样的错误

后面怀疑没有生效,重启电脑和重启jvm都行

最后换了jdk8的最新版本就可以了

我电脑jdk最开始版本是:

此jdk默认会限制秘钥的长度导致报上述错误

重新下载了jdk8最新版的

此jdk默认不会限制秘钥的长度报上述错误

在默认情况下,jdk8u361 AES加解密密钥长度不限制,使用的是jre/lib/security/unlimited目录中的策略文件。其策略机制为:

如果java.security文件中配置了crypto.policy,会使用配置的机制,只允许两个值limited | unlimited,如果配置错误,则会报异常;

如果java.security文件中没有配置crypto.policy,那么会像jdk之前版本一样,加载jre/lib/security目录下的local_policy.jar, US_export_policy.jar,并使用其代表的策略;

如果java.security文件中没有配置crypto.policy并且jre/lib/security目录下没有local_policy.jar, US_export_policy.jar,那么会启用默认不限制密钥长度机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAMO-YOLO : A Report on Real-Time Object Detection Design

DAMO-YOLO:实时目标检测设计报告在本报告中&#xff0c;我们提出了一种被称为DAMO-YOLO的快速准确的物体检测方法&#xff0c;该方法比最先进的YOLO系列具有更高的性能。DAMO-YOLO是由YOLO扩展而来的&#xff0c;它采用了一些新技术&#xff0c;包括神经结构搜索(NAS)、高效的重…

LeetCode——1669. 合并两个链表

一、题目 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果链表的头指针。 来…

【Qt】3.菜单栏、工具栏、状态栏、铆接部件、核心部件、资源文件

目录 菜单栏 工具栏 代码 mainwindow.cpp 结果 状态栏 铆接部件 核心部件 代码 mainwindow.cpp 结果 资源文件 代码 mainwindow.cpp 结果 菜单栏 只能有一个 menuBar()返回一个QMenuBar *bar 将bar放入到窗口中setMenuBar(bar) 添加菜单addMenu("文件&…

三年了,回村了

今年回老家了&#xff0c;因为工作和疫情等原因已经三年多没回了&#xff0c;思乡之情已经压不住了。 老家是一个五线小城市&#xff0c;属于南方典型的鱼米之乡&#xff1a;依山傍水、山清水秀。同时还有一个知名白酒厂&#xff1a;白云边&#xff0c;经济发展还不错。 老家…

从“语义网”到“去中心化”,Web3.0到底是个啥?

什么是Web3.0&#xff0c;为什么近两年这个概念又再一次火出了圈&#xff0c;但凡A股上市公司正在做或者准备做的业务与它沾上边&#xff0c;总会有那么几次异动。 这个概念到底是金融市场布下的骗局&#xff0c;还是未来互联网发展的趋势&#xff0c;在大家的眼里都是褒贬不一…

Redis 核心原理串讲(下),架构演进之高扩展

文章目录Redis 核心原理总览&#xff08;全局篇&#xff09;前言一、数据分片1、集群&#xff1f;2、分片&#xff1f;3、分片固定&#xff1f;4、元数据二、集群1、代理集群2、分片集群3、代理 分片集群三、生产实践总结Redis 核心原理总览&#xff08;全局篇&#xff09; 正…

新的一年,如何打开超级APP发展格局

本文开始我们先来明确一个概念&#xff1a;超级APP是什么&#xff1f;百度百科的定义是——那些拥有庞大的用户数&#xff0c;成为用户手机上的"装机必备”的基础应用。实际上各大互联网平台也给出了不同的解释&#xff0c;但相同点是他们都认为超级APP就应该超级个性化&a…

简单手写后门Safedog检测绕过

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是简单手写后门Safedog检测绕过。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁…

最长上升子序列、最长公共子序列、最长公共上升子序列(LIS、LCS、LCIS)

LIS、LCS、LCIS最长上升子序列LIS最长公共子序列LCS最长公共上升子序列LCIS最长上升子序列LIS 题目链接&#xff1a;AcWing895. 最长上升子序列 这里只说明O(n2)O(n^2)O(n2)的解法&#xff0c;O(nlogn)O(nlogn)O(nlogn)解法之前的博客有介绍 O(n2)O(n^2)O(n2)的解法较为容易理…

MMCV - browse_dataset.py 可视化config文件数据预处理部分

无论是mmdetection、mmtracking、mmdetection3D等框架&#xff0c;在\tools\analysis_tools中均有一个名为browse_dataset.py的文件。该文件能够帮助用户直接可视化 config 文件中的数据处理部分&#xff0c;查看标注文件是否正确&#xff0c;同时可以选择保存可视化图片到指定…

百度学习经验

如何应对干扰1.将吸引你注意力的东西放在一旁&#xff0c;离开你的视野范围2.告诉大家你有空的时间&#xff0c;和你要专注的时间范围3.跟别人咨询的时候也是一样&#xff0c;不要在他专注的时候大扰别人关于如何做事&#xff0c;控制精力就是按照重要程度排序&#xff0c;不重…

《最佳停止时间》:什么时候可以停止寻找?

分享一个有趣的数学编程知识 《最佳停止时间》&#xff1a;什么时候可以停止寻找&#xff1f; 日常生活有很多"寻找-决策过程"&#xff0c;如果考察所有选项&#xff0c;要花费很长时间&#xff0c;可能还会错失机会&#xff0c;后面遇到的未必有前面的好。能否确定一…

实力见证 | Authing 荣获 2022 中国数字化转型与创新评选之“年度安全创新产品”

近日&#xff0c;由数字产业创新研究中心、锦囊专家、首席数字官联合全国 20 多家 CIO 组织机构、行业协会共同发起的 《2022 中国数字化转型与创新评选》 获奖榜单新鲜出炉&#xff0c;Authing 成功入选该榜单&#xff0c;荣获“年度安全创新产品”。 该榜单自 2022 年 5 月启…

【设计模式】行为型模式·策略模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 一.概述 该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式&#xff0c;它通过对算法进行封…

英语学习 作文 1

1 议论文和应用文 1、议论文&#xff1a;essay 1 观点选择&#xff1a;option、choice 2 现象解释&#xff1a;why、what 3 问题解决&#xff1a;how to、solution、measure **4 图片图表&#xff1a;image、cartoon、diagram、chart**2、应用文&#xff1a;信件、通知、报道…

设计模式——创建型模式

目录 4.创建型模式 4.1 单例设计模式 4.1.1 单例模式的结构 4.1.2 单例模式的实现 4.1.3 存在的问题 4.1.4 JDK源码解析-Runtime类 4.2 工厂模式 4.2.1 概述 4.2.2 简单工厂模式 4.2.3 工厂方法模式 4.2.4 抽象工厂模式 4.2.5 模式扩展 4.2.6 JDK源码解析-Collecti…

2023年山东最新建筑施工信号工(建筑特种作业)考试真题题库及答案

百分百题库提供特种工&#xff08;信号工&#xff09;考试试题、特种工&#xff08;信号工&#xff09;考试预测题、特种工&#xff08;信号工&#xff09;考试真题、特种工&#xff08;信号工&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助…

C++98以及C++11产生随机数的方法

目录引言1、C98标准实现随机数2、C11新标准随机数引擎引言 在C11出现之前&#xff0c;C98使用随机数采用的是C标准库的写法。而在C11出现后&#xff0c;我们生成随机数可以采用更为现代化的方式。 1、C98标准实现随机数 以往生成随机数使用的是cstdlib.h库中的rand()函数&…

基于Node.js的3DTiles三维倾斜摄影模型爬虫

随着小型无人机的普及,乡村级的倾斜摄影模型构建已经越来越简单。一个无人机和一名飞手2个小时内就可以完成。在做WebGIS和Cesium开发时,3DTiles是一种常用的倾斜摄影三维模型的切片格式。3DTiles格式通常有散列和紧凑两种文件组织形式,其中不同工具生成的散列数据使用的索引…

【GNN报告】GNN-LOGS部分报告汇总

Bastain Rieck: Topology-Based Graph Representation Learning 基础 拓扑学习 基于拓扑学习的工作 参考 Bastain Rieck: Topology-Based Graph Representation Learning_哔哩哔哩_bilibili Chaitanya K. Joshi Graph Neural Networks for Geometric Graphs 背景 方法 Geom…