midas中如何使用加密,socketconnetion连接(100分)

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

sheric

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是socketconnetion,想在传输过程中实现加密,听说要实现什么接口,那里又这
方面的资料,我现在急需!谢谢大家
 
你说的是数据包加密吧,如果是。
1、你可以找一些加密算法的模块,现在网上有关于RSA等算法的DELPHI模块下载,管不管用
没试过,不过肯定有。
2、如果你们公司有足够的经济实力,可以寻求第三方CA支持,现在普遍支持128,安全性
肯定比自己写的好,也就是套用一个CA接口。
3、如果有其他更好的商业用法,我也想听听。
 
j_shen2000,哪有rsa 的加密算法?delphi的
 
我的毕业设计就是搞这个的,不过那时候找的算法都不知道我扔哪了,到google上找找吧,
挺多的。
 
在深度历险上有很多加密东西。
http://www.vclxx.org/DELPHIGB/AAAT1027.HTM
 
可使用interceptor(拦截者),在delphi的demos/midas/intrcpt下有一个范例,可以看一看,另外建意你看看李维写的《多层分布式应用系统篇》一书,其中有简单介绍。
 
注册在delphi的demos/midas/intrcpt等COM,设置SocketConnection的InterceptName,同时设置Server的Socket Server
的InterceptGUID为客户端相同的InterceptGUID。
 
:j_shen2000您好,我也在做这个项目,能不能和您进一步深谈!
对了,我有SSL 中的对称加密算法,你想要吗?还有DES的,不过你只能用,是用C写的
我只能给你库,不能给你原程序,因为那是公司的作品!
 
:macor
注册在delphi的demos/midas/intrcpt等COM,设置SocketConnection的InterceptName,同时设置Server的Socket Server
的InterceptGUID为客户端相同的InterceptGUID。
能不能具体点,scktsrvr设置InterceptGUID好象不起作用,客户端不用设任何InterceptGUID,还是可以连上数据库。
delphi的demos/midas/intrcpt的例子如何使用?

 
C:/Program Files/Borland/Delphi6/Source/Vcl/ScktSrvr.dpr
ScktSrvr.exe的源码可以帮助你
 
下面是intercpt.dll动态连接的源代码.(方法datain和dataout功能是拦截数据
对数据进行加密和压缩 ).生成动态连接库以后.不知道如和调用atain和dataout;
还有 DataOut(const Data: IDataBlock);参数data如何设置?
1: regsrv32 /path/intercpt.dll 可以通过在setupfactory中建立安装程序注册intercpt.dll
2: 在scktsrvr.exe中的各个端口中,那个Intercept GUID:GUID加上intercpt.dll的GUID
就是上面程序中的:
const
Class_DataCompressor: TGUID = '{B249776C-E429-11D1-AAA4-00C04FA35CFA}';
//此值可以修改,只要客户端、服务器和intercpt.dll的注册值保持一致。
3:在你的客户端中的SocketConnection的属性中intercpt的值也是这个GUID.
这就行了
scktsrvr中的TServerSocket已经对这个压缩和解压已经封装,只需要对intercpt.dll进行
注册即可。
注意第一个步骤,在客户端中也在进行注册。
在scktsrvr.exe中的扩展TServerSocket中,它是调用TSocketTransport中的FInterceptor: IDataIntercept
而这个FInterceptor是根据用户注册的IDataIntercept接口来创建的。
Datain, Dataout是集成在IDataIntercept接口中的,所以不用单独调用。
而我们所要做的是对IDataintercept接口进行接口的实现(也就是写个类来实现接口的函数
和过程),在scktsrvr中它是自动根据这个GUID调用的。
ServerSocket.InterceptGUID --> SocketTransport.InterceptGUID.
SocketTransport:
if FInterceptGUID <> '' then
Guid := StringToGuid(FInterceptGUID);
//这里将创建一个你注册了的COM对象,也就是你写的对IDataIntercept的实现类
FInterceptor := CreateComObject(Guid) as IDataIntercept;
在数据传输时,
if Assigned(FInterceptor) then
//这里就调用你写的类中的方法
FInterceptor.Datain(Data) //or FInterceptor.DataOut(Data)


下面是数据传输加密部分关键代码,把他写入intercpt.dll,重新编译
procedure Encode(SrcStream: TStream);
var
Buffer : TMemoryStream;
Ch : byte;
begin
if SrcStream.Size=0 then
exit;
// 内部创建临时的缓冲区,结果写回SrcStream, 也可以外部传入DstStream接收结果。
Buffer := TMemoryStream.Create;
try
SrcStream.Position := 0;
// 原来这里用<>判断是一个危险的方式,因为它可能会导致死循环或异常
while SrcStream.Position < SrcStream.Sizedo
begin
SrcStream.Read(Ch,1);
Ch := Ch XOR Ord('a');
Buffer.Write(ch,1);
end;
Buffer.Position := 0;
SrcStream.Size := 0;
SrcStream.CopyFrom(Buffer, 0);
finally
Buffer.Free;
end;
end;

procedure Decode(SrcStream: TStream);
var
Buffer : TMemoryStream;
Ch : byte;
begin
if SrcStream.Size=0 then
exit;
Buffer := TMemoryStream.Create;
try
SrcStream.Position := 0;
while SrcStream.Position < SrcStream.Sizedo
begin
SrcStream.Read(Ch,1);
Ch := Ch XOR Ord('a');
Buffer.Write(ch,1);
end;
Buffer.Position := 0;
SrcStream.Size := 0;
SrcStream.CopyFrom(Buffer, 0);
finally
Buffer.Free;
end;
end;
 
请问,SocketConnect与服务器联接后,ClientDataSet属性也设置好了,但设置其Active := True
出现错误;
假如服务器端的Provider的DataSet为一个Query,请问如何通过这个Query取得数据?
 
我这里有Rsa的加密算法,DELPHI的
http://www.poicreate.com/other/rsa.zip
 
大家这个问题解决了吗,我想问一下如何在数据传输过程中给数据加密呢?
 
后退
顶部