数据库加密

原创 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) + "\""); 
  } 
} 

 

SQLite 数据库加密的一种解决方案

SQLite是一个非常小巧的跨平台嵌入式数据库,它的数据库以文件的形式存放在本地磁盘上,但是在其开源的免费版中它却缺少了一个数据库中几乎是必备的功能,那就是对于数据库的加密。SQLite的数据库文件可...
  • benny5609
  • benny5609
  • 2008-03-17 19:54:00
  • 9911

数据库加密技术总结

数据库加密技术总结 一个好的数据库加密系统应该在保护数据安全的基础上,尽可能提高工作效率,在 工作效率和安全性之间取得一个平衡。总体来说应该满足以下要求: 1.      加解密速度要求足够快,...
  • zhc402044909
  • zhc402044909
  • 2014-01-04 20:48:50
  • 5718

Android 数据库加密

一 简介             SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的读写效率、资源消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如An...
  • FX_SKY
  • FX_SKY
  • 2014-11-16 22:29:18
  • 5098

greendao3.0以上使用步骤(三):数据库加密

greendao3.0以上使用步骤(一):基础使用greendao3.0以上使用步骤(二):数据库到底该怎么升级 引入数据库 1、在项目的build.gradle中加入这些配置// Top-level...
  • huangxiaoguo1
  • huangxiaoguo1
  • 2017-10-14 14:24:48
  • 2661

sqlite3免安装直接打开加密数据库

  • 2016年05月05日 10:50
  • 42.44MB
  • 下载

Android数据库加密

Android数据库加密 一、简介 SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的读写效率、资源消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如A...
  • qq_19711823
  • qq_19711823
  • 2016-03-24 19:43:11
  • 2776

iOS FMDB数据库加密相关

sqlite应用几乎在所有的App都能看到,虽然我们的数据存储在沙盒里面,一般情况下无法拿到,但是iOS管理软件(如:iFunBox)可以读取到应用程序沙盒里面的文件,为了提高数据的安全性,我们需要考...
  • qq_33778243
  • qq_33778243
  • 2016-01-18 20:52:21
  • 1281

数据库账号密码加密

数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中...
  • EthanWhite
  • EthanWhite
  • 2016-01-11 17:16:54
  • 943

mysql数据库自己的加密方法---dos实现

如何利用MySQL数据库自带加密函数进行加密 1.  首先,先介绍下加密函数,PASSWORD(string)函数可以对字符串string进行加密,代码如下: SELECT PASSWOR...
  • masterShaw
  • masterShaw
  • 2016-11-04 16:41:08
  • 1693

如何配置数据库密码加密访问数据库

一般的数据库配置文件中,连接数据库都是这样的,现在又项目需要对password 进行加密处理, 所以我们要对org.apache.commons.dbcp.BasicDataSource类进行重写,如...
  • Fishroad
  • Fishroad
  • 2015-05-26 11:16:26
  • 7283
收藏助手
不良信息举报
您举报文章:数据库加密
举报原因:
原因补充:

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