【300分求解决方法!】一次只能发100,稍后会补够的!谢谢大家!

frenking 2004-07-15 05:08:02
一个项目,有一部分数据需要单独存放并且对数据进行加密,而且该部分数据
还需要供主程序进行调用,这部分数据的处理方式目前有两种方式选择:
1。用自己建立的文件存放数据
2。用access来存放数据

问题:
1。如果用文件存放数据,格式如何定义(包含主从表结构),有那些地方需要注意呢?
从文件中读取回的数据怎么能够以数据集的方式体现出来,除了采用临时表还有其他方法吗?
【大家有没有做过,可以给我发一些相关的文档资料和Demo】
2。如果采用Access来存放数据的话,我知道可以通过修改Access的文件头数据进行加密,
但是这样处理有个问题:程序运行的时候,需要把文件头的数据还原才可以建立连接,
用户就可以在程序运行状态从后台打开access数据库。有没有一种好的方法对access进行加密呢?
3。还是采用access做数据库,有朋友提意见说是不对文件加密,对存入的数据进行加密,
我想知道,通过什么方式加密呢,在用query读取数据的时候如何把加密的数据还原,
并且以数据集的方式体现呢?如果进行查询或者筛选数据的时候又该如何处理呢?

以上三个问题,知道300分有点少,不够可以加。
邮箱:freeking_g@163.com
QQ: 153993049(请注明DFW)
先谢谢大家!
...全文
303 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeyihan 2004-07-17
  • 打赏
  • 举报
回复
sql server 2000里的自定义函数不知楼主用过没有,可以自定义一个加密过程一个解密过程,直接放进数据库里就行了。
yinzhiw 2004-07-16
  • 打赏
  • 举报
回复
学习
frenking 2004-07-16
  • 打赏
  • 举报
回复
----------->应为看你的字太费 眼睛 ,,哈哈

呵呵,幽默!
jinjazz 2004-07-16
  • 打赏
  • 举报
回复
>>全部用计算字段的话查询速度会不会受到影响呢?
為什麼不考慮我提的
第3種解決方法??? 比你用計算字段肯定快很多!!!


----------->应为看你的字太费 眼睛 ,,哈哈
frenking 2004-07-16
  • 打赏
  • 举报
回复
aiirii(ari-爱的眼睛

呵呵,我已经计划用哥们你的建议了,
不过还是想看看大家还有什么好的思路,
再次谢谢大家
fei19790920 2004-07-16
  • 打赏
  • 举报
回复
tinydb
著名的MyBase就是用的它
aiirii 2004-07-16
  • 打赏
  • 举报
回复
>>全部用计算字段的话查询速度会不会受到影响呢?
為什麼不考慮我提的
第3種解決方法??? 比你用計算字段肯定快很多!!!
liuqifeiyu 2004-07-16
  • 打赏
  • 举报
回复
我觉得要是数据机密级别很高的话,可以考虑数据库加密和数据加密两种方法同时采用,不过这会给程序调试和维护及以后的生计带来一定的不方便
frenking 2004-07-16
  • 打赏
  • 举报
回复
呵呵,自己顶顶~
jinjazz 2004-07-16
  • 打赏
  • 举报
回复
计算字段的计算过程不是在查询时候就触发的,而是在显示的时候触发的,比如你的grid滚动条滚动时
frenking 2004-07-16
  • 打赏
  • 举报
回复
全部用计算字段的话查询速度会不会受到影响呢?
jinjazz 2004-07-16
  • 打赏
  • 举报
回复
加密算法可以自定义,用access,query读取的时候,显示全部用添加的“计算字段“
ssk0532 2004-07-16
  • 打赏
  • 举报
回复
同意 眼睛 的观点
不过,的确费眼!
cronuz 2004-07-15
  • 打赏
  • 举报
回复
推荐一个控件TClientDataSet,可把数据存成二進制形式,当然也可自己再加密。

procedure TForm1.Button1Click(Sender: TObject);
var
myDataSet:TClientDataSet;
begin
myDataSet := TClientDataSet.Create(application);//建立
myDataSet.FieldDefs.Add('name',ftstring,10);
myDataSet.FieldDefs.add('age',ftinteger);
myDataSet.CreateDataSet;
myDataSet.Active;
myDataSet.AppendRecord(['張三',10]);
myDataSet.AppendRecord(['李四',40]);

DataSource1.DataSet := myDataSet; //再接TDBGrid控件、直接可看
myDataSet.SaveToFile( ExtractFilePath (Application.ExeName) + 'ClientDataSet1.txt', dfBinary ); //二進制形式
end;

procedure TForm1.Button2Click(Sender: TObject);
var
myDataSet:TClientDataSet;
begin
myDataSet := TClientDataSet.Create(application);
myDataSet.LoadFromFile(ExtractFilePath (Application.ExeName) + 'ClientDataSet1.txt'); //読出
myDataSet.Active;
DataSource1.DataSet := myDataSet;
end;
ly_liuyang 2004-07-15
  • 打赏
  • 举报
回复
都系方法3简单的
1是最好的,要自己做了好用的,单是这个都能卖不少钱了,比你现在做这个系统好N多了
frenking 2004-07-15
  • 打赏
  • 举报
回复
谢谢楼上的兄弟们,请继续......
aiirii 2004-07-15
  • 打赏
  • 举报
回复
>>2。如果采用Access来存放数据的话,我知道可以通过修改Access的文件头数据进行加密,
這種沒什麼意思, 建議不用


>>3。还是采用access做数据库,有朋友提意见说是不对文件加密,对存入的数据进行加密,
在對應的字段的OnGetText 中解密數據, OnSetText 中加密數據, 這樣的保存方法也很好!
而且簡單!! 可考慮!

個人認為 3 種比較正規的做法!!
其實與數據庫驅動無關, 只要選擇合適的算法, 效果也不錯!
當然, 第三種方法 , 你在讀字段的時候, 每個都要解密, 會影響性能, 緩慢顯示!
setdefault 2004-07-15
  • 打赏
  • 举报
回复
可以将数据以一定的结构存储,对结构数据块进行加密,将加密后的数据块存储进数据库。使用时重数据库中读出数据块,解密填充数据结构,这样对速度的影响不会很大,用什么数据库都没有影响。
aiirii 2004-07-15
  • 打赏
  • 举报
回复
>>1。用自己建立的文件存放数据
有很多現在的自定義數據庫格式, 別人打開讀取, 比較難,
如:
http://www.tinydb.com/
http://borland.mblogger.cn/aiirii/posts/3559.aspx

以上兩個都帶有加密功能!
ldyocean 2004-07-15
  • 打赏
  • 举报
回复
我以前做的是部分用数据库,部分用文件。

数据库部分主要存放基础数据,用DES加密,解密,至于使用很简单,就象调用一个函数一样,但是加解密算法要写好,既要有难度,又要保证速度,关键在于密匙的设置,如果你要求不高,可以用死密匙,如果要求高,就用活的,我以前要求很高,不仅是活密匙,而且每行数据和每列数据加密可能密匙都不一样,为了应付加密,我们又专门弄了一个加密数据库来搞定他,呵呵,我想一般不需要那么复杂的东西。

文件部分主要存放业务相关部分,首先加密文件头,有些重要的文件我们还做了一些加密点,就是读到那里还要校验。

两种方式各有优缺点,文件快,但是不适合检索啊什么的,数据库慢些,但保险,而且可以检索,塞选,都没问题,当然检索的时候你输入的条件必须在你的代码里先加密,否则对不上,检索出来再解密就行了

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧