数据库加密

原创 2013年12月04日 10:00:01

内容转自http://tiantiankaixin.iteye.com/blog/743228

 

package com.lxitedu.tools.generate; 

import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

import com.dcivision.framework.Crypt; 
import com.dcivision.framework.SystemParameterConstant; 
import com.dcivision.framework.SystemParameterFactory; 

/** 
* suit the php 
* 
* @author Administrator 
* 
*/ 
public class MD5 { 

  // 解密类: Crypt 
  private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", 
      "e", "f"                           }; 

  public static void main(String[] args) throws Exception { 
    getMD5EncryptedString(""); 
    String encrptedPwd = Crypt.encrypt("diaoer", 
        SystemParameterFactory.getSystemParameter(SystemParameterConstant.CRYPTO_SALT)); 
    System.out.println(getMD5EncryptedString("diaoer")); 
    System.out.println(encrptedPwd); 
  } 

  public static String getMD5EncryptedString(String sourceString) throws NoSuchAlgorithmException { 
    // 加密后的字符串 
    // 创建具有指定算法名称的信息摘要 
    MessageDigest md = MessageDigest.getInstance("MD5"); 
    // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 
    byte[] results = md.digest(sourceString.getBytes()); 
    return byteArrayToHexString(results); 
  } 

  private static String byteArrayToHexString(byte[] b) { 
    StringBuffer resultSb = new StringBuffer(); 
    for (int i = 0; i < b.length; i++) { 
      resultSb.append(byteToHexString(b[i])); 
    } 
    return resultSb.toString(); 
  } 

  /** 
   * 将一个字节转化成十六进制形式的字符串 
   */ 
  private static String byteToHexString(byte b) { 
    int n = b; 
    if (n < 0) 
      n = 256 + n; 
    int d1 = n / 16; 
    int d2 = n % 16; 
    return hexDigits[d1] + hexDigits[d2]; 
  } 

} 





解密: 
/* 
* @(#)Crypt.java 
* 
* Copyright (c) 2003 DCIVision Ltd 
* All rights reserved. 
* 
* This software is the confidential and proprietary information of DCIVision 
* Ltd ("Confidential Information").  You shall not disclose such Confidential 
* Information and shall use it only in accordance with the terms of the license 
* agreement you entered into with DCIVision Ltd. 
*/ 
package com.dcivision.framework; 

/** 
* Crypt.java 
* 
* This class is to provide encrypt and decrypt function by a password provided. 
* 
* @author Rollo Chan 
* @company DCIVision Limited 
* @creation date 25/06/2003 
* @version $Revision: 1.6 $ 
*/ 

public class Crypt { 

  public static final String REVISION = "$Revision: 1.6 $"; 

  private Crypt() { 
  } 

  /** 
   * encrypt 
   * 
   * Encrypt a string with a password 
   * 
   * @param buffer 
   *          The buffer to be encrypted 
   * @param password 
   *          The password 
   */ 
  public static String encrypt(String buffer, String password) { 
    StringBuffer sbSpace = new StringBuffer("     "); 
    buffer = sbSpace.toString() + buffer + sbSpace.toString(); 
    char[] temp = new char[buffer.length()]; 

    int a = 0; 
    for (int i = 0; i < buffer.length(); i++) { 
      int b = password.charAt(a); 
      a++; 
      if (a >= password.length()) { 
        a = 0; 
      } 
      int c = (int) buffer.charAt(i); 
      temp[i] = (char) (c ^ b); 
    } 
    return toHex(temp); 
  } 

  /** 
   * decrypt 
   * 
   * Decrypt a string with a password 
   * 
   * @param buffer 
   *          The buffer to be decrypted 
   * @param password 
   *          The password 
   */ 
  public static String decrypt(String buffer, String password) { 
    char[] temp = toChar(buffer); 
    String result = ""; 
    int a = 0; 
    for (int i = 0; i < temp.length; i++) { 
      int b = password.charAt(a); 
      a++; 
      if (a >= password.length()) { 
        a = 0; 
      } 
      int c = temp[i]; 
      result += (char) (c ^ b);// ^ 按位异或XOR 就是二个操作数只有一个是1的话结果就是 1 否则就是 0 。 
    } 
    return result.trim(); 
  } 

  private static int hexToInt(char c) { 
    if (c >= '0' && c <= '9') { 
      return c - '0'; 
    } 
    return (c - 'a') + 10; 
  } 

  private static char hexToChar(String buffer) { 
    int l = hexToInt(buffer.charAt(1)); 
    int h = hexToInt(buffer.charAt(0)); 
    return (char) (h * 16 + l); 
  } 

  private static String toHex(char[] buffer) { 
    String temp = ""; 
    String result = ""; 
    for (int i = 0; i < buffer.length; i++) { 
      int c = buffer[i]; 
      temp = Integer.toHexString((int) c); 
      if (temp.length() == 1) { 
        temp = "0" + temp; 
      } 
      result += temp; 
    } 
    return result; 
  } 

  private static char[] toChar(String buffer) { 
    char[] result = new char[buffer.length() / 2]; 
    for (int i = 0; i < buffer.length(); i += 2) { 
      if (i + 2 <= buffer.length()) { 
        String temp = buffer.substring(i, i + 2); 
        result[i / 2] = (char) hexToChar(temp); 
      } 
    } 
    return result; 
  } 

  /** 
   * main 
   * 
   * @param arg 
   */ 
  public static void main(String arg[]) { 
    // String buffer = arg[0]; 
    // String password = arg[1]; 
    String buffer = "diaoer"; 
    String password = "test"; 
    String temp = Crypt.encrypt(buffer, password); 
    System.out.println("buffer    = \"" + buffer + "\""); 
    System.out.println("password  = \"" + password + "\""); 
    System.out.println("encrypted = \"" + temp + "\""); 
    System.out.println("decrypted = \"" + Crypt.decrypt(temp, password) + "\""); 
  } 
} 

 

数据库文件加密(SDS)介绍

  • 2014年10月12日 18:10
  • 1.98MB
  • 下载

Jboss c3p0数据库配置加密jar包

  • 2013年07月30日 18:40
  • 710KB
  • 下载

如何实现数据库连接的密码加密

本文转载自:http://zrpingfan.blog.sohu.com/113136684.html    项目需求 : 所有认证数据,例如密码,不论是在储存、传输中都必须妥善保护,以防泄露或...

数据库加密

  • 2013年11月15日 21:20
  • 262KB
  • 下载

JP数据库加密

  • 2014年04月19日 22:26
  • 2.45MB
  • 下载

springMVC web项目 数据库用户名密码加密解密

在使用springMVC开发web项目中,数据库的用户名,密码一般都是配置在.properties文件中 然后在通过.xml配置文件引入.properties的变量,例如 在config.prop...
  • zhangt85
  • zhangt85
  • 2014年12月24日 12:39
  • 18604

sqlserver 数据库加密工具xp_crypt

  • 2006年02月23日 09:05
  • 1.33MB
  • 下载

tomcat数据库连接池密码加密

应用部署到tomcat上后,数据库连接信息通常配置在context.xml,默认配置都是明文形式,如数据库用户名、密码等,这样可能会导致配置信息被其他人窃取,造成安全隐患,下面介绍下通过对配置信息加解...
  • rqgxy
  • rqgxy
  • 2017年07月09日 22:12
  • 346

android 加密已创建的数据库

  • 2017年05月21日 10:21
  • 41.27MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库加密
举报原因:
原因补充:

(最多只允许输入30个字)