首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

*用代码给access数据库加密.如何实现

2012-08-30 
*****用代码给access数据库加密..怎么实现?如题:用代码给access数据库加密..怎么实现?用代码给access数据

*****用代码给access数据库加密..怎么实现?
如题:

用代码给access数据库加密..怎么实现?
用代码给access数据库加密..怎么实现?

[解决办法]
把MDB文件以二进制XOR
把access文件保存为其他自定义格式
http://www.codeproject.com/KB/files/encryption.aspx
[解决办法]

C# code
//根据网上经验和方法用C#做一个破解程序  // 本程序最多取16位密码  using System.IO;  using System.Windows.Forms;  class Access  {  // 获取密码  static string GetPassword(string file)  { // 未加密的文件0x42开始至0x61之前的每间隔一字节的数值   byte[] baseByte = { 0xbe,0xec,0x65,0x9c,0xfe,0x28,0x2b,0x8a,0x6c,0x7b,0xcd,0xdf,0x4f,0x13,0xf7,0xb1, };   byte flagByte = 0x0c; // 标志 0x62 处的数值   string password = \"\";   try   {    FileStream fs = File.OpenRead(file);   fs.Seek(0x14, SeekOrigin.Begin);    byte ver = (byte)fs.ReadByte(); // 取得版本, 1为Access2000, 0为Access97    fs.Seek(0x42, SeekOrigin.Begin);    byte[] bs = new byte[33];    if (fs.Read(bs, 0, 33) != 33) return \"\";    byte flag = (byte)(bs[32] ^ flagByte);    for(int i = 0; i < 16; i++)    {  byte b = (byte)(baseByte^bs[i*2]);  if (i%2==0 && ver==1) b ^= flag; //Access 2000  if (b > 0) password += (char)b;    }   }   catch {}   return password;  }  // 主入口  static void Main()  {   OpenFileDialog f = new OpenFileDialog();   if (f.ShowDialog() != DialogResult.OK) return;   MessageBox.Show(\"密码:[\" + GetPassword(f.FileName) + \"]\", \"密码\");  }  }
[解决办法]
VB code
Private Function ChangeAccessPwd(ByVal OldPassword As String, ByVal NewPassword As String, ByVal DbPath As String) As Boolean    On Error GoTo ErrorHandler    Dim db As DAO.Database, ws As DAO.Workspace    Set ws = DBEngine.Workspaces(0)    Set db = ws.OpenDatabase(DbPath, True, False, "MS Access;PWD=" & OldPassword)    'Change password    db.NewPassword OldPassword, NewPassword    db.Close: Set db = Nothing    ws.Close: Set ws = Nothing    ChangeAccessPwd = TrueExit FunctionErrorHandler:    Set db = Nothing    Set ws = Nothing    ChangeAccessPwd = FalseEnd FunctionACCESS密码容易被破解。。 

热点排行