mysql 密码文件改成密文_需求:实现数据库密码通过密文的方式存储在配置文件中 | 学步园...
需求:实现数据库密码通过密文的方式存储在配置文件中
配置文件:evoucher.conf【可以是任意自定义格式结尾的配置文件】格式 是以 Key:Value存在的。
例如如下:
# evoucher.database 数据库配置
#####################################################################################################
# 'ORACLE'ORACLE数据库;'POSTGRES'postgreSql数据库;'DB2'DB2数据库;'SYBASE'sybase数据库;'UPDB'upRight数据库;'KB'kingBase数据库
evoucher.model.DataBaseService=ORACLE
#设置数据库用户名
evoucher.database.user=assp_pbc_1231
#设置数据库密码
evoucher.database.password=1
#设置数据库ip
evoucher.database.ip=192.168.1.241
#设置数据库端口
evoucher.database.port=1521
#数据库实例名oracle是实例名、postgres是数据库名
evoucher.database.databasename=orcl
##################oracle数据库URL配置 (当使用oracle数据库时,配置了URL则优先使用根据url配置的数据库,其他数据库无需配置)
##################如 jdbc:oracle:thin:@127.0.0.1:1521:orcl
evoucher.oracle.url=
#####################################################################################################
# evoucher.service.sign 签名服务配置
配置文件操作类:PropertiesHander.java
里面几个重要的方法:
saveNewPro:更新新的配置 更新配置
* 1.将更改后的配置文件保存在新的properties内2.初始化参数 将更改后的参数进行初始化3.更新缓存内的内容
getEVConfValue(String key)
setEVConfValue(HashMap map)
Properties getProByCustomPath(String customPath,String fileName) { //获取自定义包路径的配置文件
List readConfig(String fileURL) //读取配置文件 保留里面的注释信息
源文件如下:
/**
* 配置文件操作类
*
* @author leiruiheng
*
*/
public class PropertiesHander {
private static final Logger logger = Logger
.getLogger(PropertiesHander.class);
private static HashMap File_MAPPINGS = new HashMap();
private static Properties evoucherConfPro = PropertiesHander
.getProByCustomPath("/", BIZConstant.FILE_NAME_EVOUCHER_CONF);
static {
// 注册类字段与配置字段的映射关系
File_MAPPINGS.put("M_SIGN_SERVICE", "evoucher.model.SignService");
File_MAPPINGS.put("M_MESSAGE_SERVICE", "evoucher.model.MessageService");
File_MAPPINGS.put("M_ESTAMP_SERVICE", "evoucher.model.EStampService");
File_MAPPINGS.put("M_DATABASE_SERVICE",
"evoucher.model.DataBaseService");
File_MAPPINGS.put("M_CALL_BACK_PARAMETER",
"evoucher.service.callback.address");
File_MAPPINGS.put("M_REQUEST_NOTIFY", "evoucher.service.requestData.address");
File_MAPPINGS.put("M_CALL_BACK_THREAD_COUNT", "evoucher.service.callback.thread.count");
File_MAPPINGS.put("S_SIGN_SERVICE", "evoucher.switch.SignService");
File_MAPPINGS
.put("S_MESSAGE_SERVICE", "evoucher.switch.MessageService");
File_MAPPINGS.put("S_ESTAMP_SERVICE", "evoucher.switch.EStampService");
File_MAPPINGS.put("S_ESTAMP_ALLSIGN", "evoucher.switch.EStampAllSign");
File_MAPPINGS.put("S_ESTAMP_FUND", "evoucher.switch.EStampFund");
File_MAPPINGS.put("S_RECEIVE_VIERFY", "evoucher.switch.ReceiveVerfy");
File_MAPPINGS.put("S_READ_IS_RETURN", "evoucher.switch.IsReturn");
File_MAPPINGS.put("S_CHECK_IS", "evoucher.switch.VoucherFieldCheck");
File_MAPPINGS.put("S_CALL_BACK_FUNCTION",
"evoucher.switch.CallBackFuction");
File_MAPPINGS.put("S_ERROR_MSG_MODEL_FLAG", "evoucher.switch.ErrMsgModeFlag");
File_MAPPINGS.put("S_RECEIVE_MSG_REQUESTDATA_FLAG", "evoucher.switch.requestData");
File_MAPPINGS.put("S_RECEIVE_MSG_SENDDATA_FLAG", "evoucher.switch.sendData");
File_MAPPINGS.put("S_RECEIVE_MSG_SENDDATA_CALLBACK_FLAG", "evoucher.switch.sendData.CallBackFuncton");
File_MAPPINGS.put("S_AUTHENTICATEDUSERS", "evoucher.switch.AuthenticatedUsers");
File_MAPPINGS.put("S_TIMElOG_TEST", "evoucher.switch.TimeLog");
/** 凭证库服务版本号 */
File_MAPPINGS.put("EVOUCHER_SERVICE_VERSION", "evoucher.service.version");
//原文篡改编码
File_MAPPINGS.put("M_EVOUCHER_VERFIY_SIGN_CODE", "evoucher.verfiySignStamp.code");
//IP白名单控制
File_MAPPINGS.put("M_EVOUCHER_IP_WHITELIST_SERVER", "evoucher.ip.whiteList.server");
File_MAPPINGS.put("M_EVOUCHER_IP_WHITELIST_OCX", "evoucher.ip.whiteList.ocx");
File_MAPPINGS.put("S_CHECK_VOUCHERXMLFORXFIELD", "evoucher.switch.checkVoucherXmlForXField");
File_MAPPINGS.put("M_READ_VOUCHER_COUNT", "evoucher.service.read.voucher.count");
//校验内部凭证不能修改非空字段开关
File_MAPPINGS.put("S_CHECK_CANMODIFYNONEMPTYFIELDS","evoucher.switch.canModifyNonemptyFields");
//自动升级数据库开关
File_MAPPINGS.put("S_AUTO_UPDATEDB","evoucher.switch.autoUpdateDB");
}
/**
* 将更改后的参数保存在新的properties文件内
* @return null
* */
public static void saveNewPro(){
String fileUrl = PropertiesHander.class.getResource("/evoucher.conf").toString();
fileUrl = fileUrl.replace("file:","");
try {
//InputStream is1=PropertiesHander.class.getClassLoader().getResourceAsStream("evoucher.conf");
InputStream is = new FileInputStream(new File(fileUrl));
evoucherConfPro.clear();
evoucherConfPro.load(is);
} catch (IOException e) {
logger.error("文件加载异常", e);
}
}
public static String getEVConfValue(String key) {
if(File_MAPPINGS.containsKey(key))
key=File_MAPPINGS.get(key);
return evoucherConfPro.getProperty(key);
}
public static void setEVConfValue(HashMap map){
OutputStream out = null;
OutputStreamWriter outFileWriter = null;
BufferedWriter br = null;
try {
String s=PropertiesHander.class.getResource("/evoucher.conf").toString();
s=s.replace("file:","");
List list = PropertiesHander.readConfig(s);
out = new FileOutputStream(s);
outFileWriter = new OutputStreamWriter(out, "utf-8");
br = new BufferedWriter(outFileWriter);
for(String str : list){
if(str.contains("=")){
String[] array = str.split("=");
if(map.containsKey(array[0])){
str = array[0] + "=" + map.get(array[0]).trim();
}
}
br.write(str);
br.newLine();
}
} catch (Exception e) {
logger.error(e);
} finally{
try {
if(br != null){
br.close();
}
if(outFileWriter != null){
outFileWriter.close();
}
if(out != null){
out.close();
}
} catch (IOException e) {
logger.error(e);
}
}
}
/**
* 获取自定义包路径的配置文件
*
* @param customPath
* 自定义路径
* @param fileName
* 文件名
* @return
*/
public static Properties getProByCustomPath(String customPath,
String fileName) {
InputStream in = null;
Properties prop = new Properties();
try {
in = PropertiesHander.class.getResourceAsStream(customPath
+ fileName);
prop.load(in);
} catch (Exception e) {
throw new EVoucherException(ExceptionConstant.EVS601 + "获取文件["
+ fileName + "]失败", e);
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
logger.warn("关闭流失败", e);
}
}
return prop;
}
/**
* 读取配置文件 保留里面的注释信息
* @param fileURL
* @author LY 2014-9-23
*/
private static List readConfig(String fileURL) {
List propCont = new ArrayList();
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader bufferedreader = null;
try {
fis = new FileInputStream(fileURL);
isr = new InputStreamReader(fis, "utf-8");
bufferedreader = new BufferedReader(isr);
String temp = "";
while ((temp = bufferedreader.readLine()) != null) {
propCont.add(temp);
}
} catch (Exception e) {
logger.error(e);
} finally{
try {
if(bufferedreader != null){
bufferedreader.close();
}
if(isr != null){
isr.close();
}
if(fis != null){
fis.close();
}
} catch (IOException e) {
logger.error(e);
}
}
return propCont;
}
}
在类加载获取密码过程中:
//对数据库的密码进行加密处理
String pass=dealPassword(password);
方法体如下:
/**
* 处理密码 dealPassword 如果是明文 则加密 返回原密码
* 如果是密文 直接解密 返回解密后密码
* */
//对获取的密码进行解密
@SuppressWarnings("unchecked")
public String dealPassword(String password){
Des desObj=new Des();
String key1 = "lyn";
String key2 = "lyn";
String key3 = "lyn";
HashMap map=new HashMap();
if(password.length()<32){
//将字符串的密码长度增加至32位
String s="0000_"+password;
//对原文进行加密
String passWord = desObj.strEnc(s, key1, key2, key3);
//将加密后的参数传给配置文件更改配置文件中的信息 读取配置文件的信息
Properties evoucherPro = new Properties();
InputStream is=PropertiesHander.class.getClassLoader().getResourceAsStream("evoucher.conf");
try {
evoucherPro.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
logger.error("对密码加密时加载配置文件异常", e);
}
//将配置新的密码更新到配置文件中
evoucherPro.setProperty("evoucher.database.password", passWord);
//更新配置文件
Enumeration enmObject = evoucherPro.keys();
//对每一个主键信息进行检索处理,跟传入的返回值信息是否有相同的地方(如果有相同的地方,取出主键信息的属性,传回给返回信息)
while(enmObject.hasMoreElements()){
String Key = (String)enmObject.nextElement();
String Value = evoucherPro.getProperty(Key);
map.put(Key, Value);
}
PropertiesHander.setEVConfValue(map);
return password;
}
//解密
String newPassword1=desObj.strDec(password, key1, key2, key3);
String newPassword=newPassword1.substring(5);
return newPassword;
}
这里面用到了DES加密
DES设计到Java版本和.js版本。参考资料如下源代码:http://download.csdn.net/detail/itjavawfc/8375329
mysql 密码文件改成密文_需求:实现数据库密码通过密文的方式存储在配置文件中 | 学步园...相关推荐
- mysql+视频文件转成流_视频文件自动转rtsp流
最近碰到一个项目需要用到 rtsp 视频流做测试, 由于真实环境的 摄像头 并不能满足需求,故尝试了一下用本地视频文件转换成rtsp视频流做测试,记录一下~ 采用方案: Docker + EasyDa ...
- mysql语句创建临时表并存入数据_mysql创建临时表,将查询结果插入已有表中 | 学步园...
今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取.我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些.然后还需要将查询 ...
- mysql 密码文件改成密文_数据库密码弄成密文
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql+视频文件转成流_详解java调用ffmpeg转换视频格式为flv
详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:W ...
- IO流批量改文件名字,把文件夹中类似于文件名,“我java_爱好者_最帅“改成“爱好者_最轻特工组合“
批量改文件名字,把文件夹中类似于文件名,"我java_爱好者_最帅"改成"爱好者_最轻特工组合" [思路] 最完整的思路 得到所有的文件对象(把所有要改名字的文 ...
- 六、Git多人开发: 把同一文件改成了不同的文件名如何处理?
@Author:Runsen 把同一文件改成了不同的文件名如何处理? 我们接着上面的话题,如果把同一文件改成了不同的文件名,如何处理? 小A和小B首先对使用git pull命令同步下.小Auser.h ...
- Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式
一.概述 1.目标:读取properties文件改成单例模式 二.代码 1.Test.java 1 class WakenUpEvent{ 2 3 private long time; 4 priva ...
- bat文件改成sh文件在linux上运行java程序
最近公司迁移服务器,从windows系统改为linux系统,里面有一些老程序是直接用bat文件启动的. 在linux中需要启动.sh文件才行,所以需要将bat文件改成sh文件才行 先粘出bat文件和s ...
- win10怎么将txt转换为html,win10怎么把txt格式改成bat_win10系统txt文件改成bat操作方法-win7之家...
在win10系统中,有着我们所熟悉的一些文件格式,当然同意存在着一些用户很少见到也不知道作用的文件,同时这些文件大多数也是可以进行转换,近日有些用户就想要将txt格式改成bat,那么win10怎么把t ...
最新文章
- 酷讯出来的张一鸣为什么做了新闻不是旅游?
- 计算机的桌面教案,《认识计算机桌面》教案-20210608141312.pdf-原创力文档
- vue-router 去掉#
- linux之用 grep -r 关键字 快速搜索在目录下面的含有关键字的文件
- Seam - 无缝集成 JSF,第 1 部分: 为 JSF 量身定做的应用程序框架
- pku 1149 PIGS(最大流)
- 简明Python3教程 1.翻译
- come的喂abc是什么梗
- input/output is not in graph tf.layers.conv2d在name命名时会自动在其后添加Conv2D
- 详解torch.view()的-1参数是什么意思
- p0f - 被动探测操作系统工具
- 机智云自助开发平台,低代码快速开发新系统
- 微软官方原版win7(64位/32位)旗舰版系统下载【适合所有品牌】
- MMU简单处理TLB例外
- 网络编程基础 --> 网络通信机理、报文与协议、套接字通信预备
- 项目管理(项目管理中的重要角色项目经理)
- 2023年申请发明专利的重要性和注意问题。
- 深度学习框架DeepLearning4J(DL4J)的安装及配置
- java学生类 方法 输出_高额悬赏,java面向对象编程,编写学生类,输出学生相关信息...
- “骑驴找马”被上司发现了,怎么办?
热门文章
- 自动化专业出路-前景-就业方向
- powerdesigner 使用excel 批量导入创建表
- haha, 愚人节听鱼人歌
- [Python设计模式] 第23章 烤串的哲学——命令模式
- 戴尔笔记本重装系统win7,一键重装系统教程
- 如何创建一个高颜值、高性能的可视化仪表盘,DevExpress Dashboard v20.1这些功能可以了解一下!
- MySQL 主键自增 Auto Increment用法
- 色调映射 (Tonemapping)
- Unity3D棋盘游戏实战入门——2D智力拼图-伍晓波-专题视频课程
- 老闪创业那些事儿(外传)——码农异事录