一个简单的加密解密方法(java、shell脚本)

最近项目中有个小的需求,配置文件中配置有DB密码,客户担心xml文件被非法窃取,所以要求配置文件中的密码是经过加密的。这就有个问题,常用的MD5加密,理论上是不可逆的。所以简单写了一个加密解密方法。

加密是使用的shell脚本,当然使用java代码也可以。作用就是运维人员输入原密码,生成加密后的密文。然后配置即可,程序中根据约定的解密方式去解读密文,还原为可用密码。这样即使配置文件被盗用也无法获知原密码。

解密方法如下:

	/**
	 * 解密
	 * @param param
	 * @return
	 */
	public static String AsciiToStr(String param) {
		String str = "";
		String asciiPsw=param;//字符串
		
		if (asciiPsw.length() > 10) {
			asciiPsw = asciiPsw.substring(10) + asciiPsw.substring(0, 10);
		}
		System.out.println("\n恢复原密码\n----------------------");
		// 密码位数
		Integer pswLength = asciiPsw.length()/3;
		for (int i = 0;i < pswLength;i++) {
			// 三位拆分、分别减101
			Integer intPsw = Integer.valueOf(asciiPsw.substring(3*i, 3*(i+1))) - 101;
			str = str + (char)Integer.parseInt(String.valueOf(intPsw));
		}
		return str;
	}



加密 shell脚本如下

  1. #!/bin/sh  
  2.   
  3. #输入密码  
  4. echo "请输入原密码:"  
  5. read resultFirst  
  6. firstPWD=$resultFirst  
  7. echo "请再次输入原密码:"  
  8. read resultSecond  
  9. secondPWD=$resultSecond  
  10. result=""  
  11. output=""  
  12.   
  13. function encryptPWD() {  
  14.     for ((i=0;i<${#firstPWD};i++));do  
  15.         #获取输入每一个字符并转换为ASCII码  
  16.         letter=`printf "%d" "'${firstPWD:$i:1}"`  
  17.         let letter=letter+101  
  18.         result+=$letter  
  19.     done  
  20.     #判断ASCII码长度  
  21.     if [ ${#result} -lt 10 ];then  
  22.         output=${result}  
  23.         echo "您的密码太简单,建议加深密码难度!!!"  
  24.     else  
  25.         output=${result:(${#result}-10):${#result}}${result:0:(${#result}-10)}  
  26.     fi  
  27.       
  28. }  
  29.   
  30. if [ "$firstPWD" = "$secondPWD" ];then  
  31.     encryptPWD  
  32.     echo "您的加密后密码为:"  
  33.     echo $output  
  34. else  
  35.     echo "您两次密码输入不正确!"  
  36. fi  



  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值