请大家帮我簇簇主意?如何加密?(200分)(200分)

  • 主题发起人 主题发起人 slcgd
  • 开始时间 开始时间
S

slcgd

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi+access做的桌面型数据库。
发布给用户后,我希望access数据库不能被用户在access环境打开。
access的密码很水,我已经安大家的方法破解了,
请问我应该如何加密。详细点,我是个新人。
诸如读硬盘序列号之类的,我不知具体如何用。
我是用installshield作安装盘,用ado访问access数据库
 
那你可以把数据库字段内容本身加密,这样他打开也没有用
 
字段内容加密——真狠!不过这样做程序开销太大了(不管是设计时还是运行时),要看数
据内容是否值得这样加密。
不知道改了Access数据库的文件扩展后还能不能正常操作(估计是行的吧),改一下扩展名
后,用户就不知道这是哪种类型的数据库了。虽然这办法很土,但却是桌面数据库系统惯用
的伎俩,我们以前就遇到过很多这样的dBase/Foxbase/FoxPro系统。
 
其实你不用这么麻烦 你可以直接对文件加密 ( 如果文件不是十分十分的大的话)
这样 不要说时Acssess,就是用文本文档也照样行得通。
加密方法很简单,
加密 先把要加密的数据库文件,加密到临时目录,然后拷贝到需要的地方即可
解密 先吧要解密的数据酷文件,解密到临时目录 然后拷贝到要需要的地方即可
用完再加密保存就行啊。不是很麻烦
保证没有人能打开
 
基本同意BLACKBOOK兄的看法,改进一点,即使大文件也无妨,在文件的特定的位置例如头部或尾部加入个人版权信息,别的程序无法读取。每次用的时候判断这些信息,如果正确则去除还原正常打开。
 
我就是经常把内容加密之后在存储的,随它怎么搞
 
加密文件头,我们以前写的Foxpro程序就是这样做的,简单明了
随便拿前面几个字节,胡乱改改,打开程序解密,关闭程序以后再加密
对付一般人足够了
 
另外ACCESS是可以修改扩展名的,而且能够照常工作,但是方法不怎么安全[:D]
 
修改扩展名?人家不会改回来吗?[?]
 
请参考:

http://www.delphibbs.com/delphibbs/dispq.asp?lid=579561
(加密的速度比较快,而且有一定的安全性)[:)]
 
把里面的内容用异或方法一下,速度绝对比别的方法快,大小还不变.
 
TO blackbook,硬木花椒:
呵呵,在程序运行的过程中,解密后的数据一样可被看见,所以这个方法也不太好
 
我对字段进行异或运算,为什么有些字符串的长度变短了,有些不变?
导致有些解密恢复不了。
各位老大遇到过这种情况吗?
请问为什么?
多谢!
欢迎提供加密代码。
 
保存时把数据内容加密(按你自己的算法),读取是反算回来[:)]
 
const BitIP:array [0..1] of byte = ($AB,$B3);//First-奇 Sencond-偶

Procedure EncryByteArr(var by:array of byte);
Procedure DecryByteArr(var by:array of byte);

Procedure EncryByteArr(var by:array of byte);
var I:Integer;
Function EncryByte(const by:byte):byte;
begin
Result :=by xor BitIP[by and 1];
end;
Begin
For I:=low(By) to high(by) do by :=EncryByte(by);
End;

Procedure DecryByteArr(var by:array of byte);
var I:Integer;
Function DecryByte(const by:byte):Byte;
begin
Result :=by xor BitIP[(by and 1) xor 1];
end;
Begin
For I:=low(By) to high(by) do by :=DecryByte(by);
End;

 
用tinydb好了
 
多人接受答案了。
 
后退
顶部