请问三层数据加密提交的问题,这方面大家可以共同讨论,付出全部家当,顶着散分100分!!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 hyxic
  • 开始时间 开始时间
H

hyxic

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了三层用sockeconnection连接的,我在客户端只提交Delta(olevariant类型)到中间层的一个过程修改数据,请问我在提交之前怎么加密这个Delta,到了中间层有如何解密?谢谢各位大侠了!100分!!!!!!!
 
你要加密的话就用加密算法了
MD5,DES
等都非常好
我一直都用DES
自己把他封装成控件
方便
 
to:々飞翔鸟々
您可能没明白我的意思,至于加密算法大家都会,现在我的问题是如何把客户端提交Delta(olevariant类型)加密到了中间层后再解密然后提交修改数据。可不可以把她当成一个数据流之类的进行加密?????
 
最好的方法就是通过Hook API 实现透明加密,如果是商用的可以联系我。
 
目前好象delphi的Delta数据格式还是保密的,估计在这里想办法比较困难,其实你如果实现这个过程的话,有两种选择:
1、不使用sockeconnection,直接用其它网络控件,自已生成数据包,并且传给自制的中间层,再解密然后生成SQL语句或者其它方式写入数据库,基本上是定义一个自己的通信协议,比较难,不过象你这种需求,目前市场上的成熟产品也都是用这个方式。
2、还是借用delphi的三层架构和控件,只是提交之前,将表中的各个字段值加密,到中间层再解密,这种方法技术并不复杂,但是实现一个真正的应用,可能会相当繁琐,太多表,太多种字段格式要考虑。
 
正因为繁琐,所以应该选用跟程序无关的透明加密,完全不用改动一个代码。
 
不过通过Hook Api进行加密,在三层中进行应用,还真是想不太明白,能不能讲个大概?
 
不管你几层的程序,之间总要进行通信。
目前你是使用 sockeconnection 来进行通信比如说
sockeconnection.sendstream 吧。
然后其中某层收到后再依照数据进行处理。
如果要加密,就必须要再发送前和接收后进行相应的处理了。
sockeconnection 最终要调用 winsock 来发送接收数据,只要通过 Hook API
在这里最终层进行加密和解密,那么所有层都不需要改动一句代码,他们接收和发送
的东西就是没加密处理过的东西。所以相对他们来说就是透明加密了,即使别人设法监听
数据保也只得到一堆乱码数据而已。
 
高,确实是可行,不过这应该也算是变相的符合了我所说的第一种方法,但确实更为通用一些。
 
这种方法最实用,开发人员无需去花精力去研究如何加密,又不用因为调试加密算法而出现问题不知道究竟是哪个环节不行。
 
谢谢各位高手赐教,能不能说得详细一点,最好给出代码,大家共同研究!
 
这个技术目前还是很抢手的,所以估计应该没人会讨论这个....
 
还抢手呢,01年亦东就讲过类似的话题,hook api基于汇编的跳转功能,给了c的实现代码,今年都07了,这方面的资料漫天飞了,NT都要退出历史舞台了,加密还得看你算法功底,简单的实现起来并不难
 
说起来当然容易,要做到透明,兼容性好,还有稳定这3样,你看看那些漫天资料有没有。
 
data不加密没有什么用!
 
procedure VariantToBuff(Const Data: OleVariant;
Buf:Pointer;
Var Len:Integer);
var
P: Pointer;
begin
Len:=VarArrayHighBound(Data, 1)+1;
Buf:=AllocMem(Len);
P := VarArrayLock(Data);
Try
if Len>0 then
CopyMemory(Buf,P,Len);
Finally
VarArrayUnlock(Data);
end;
end;


function BuffToVariant(Var Buf;
Len:Integer): OleVariant;
var
P: Pointer;
begin
Result := VarArrayCreate([0, Len -1],Varbyte);
P := VarArrayLock(Result);
Try
if Len>0 then
CopyMemory(P, PChar(@Buf),Len);
Finally
VarArrayUnlock(Result);
end;
end;

使用这两个函数再加上加密函数,不久可以实现加密吗。
 
感谢appfirst兄弟,试试看!
 
这也叫加密,无语了 .....
 
加密有很多种,你的可能很好但不一定是需要的。这个代码不是加密,但解决了variant与缓冲之间的转换,我想做简单的数据加密应该就可以了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部