我现在想写一个验证。 TSendData = RECORD
U_name :string[100];
U_psw : string[100] ;
END;
通过indy tcpclient发送 TSenddata到服务端。但是D2010找不到好的加密算法。只有一个AES可以用。但是只能加密字符串。这样会很麻烦。有没有好的加密方法。或者加密函数。能直接把senddata加密的?高分求教。
U_name :string[100];
U_psw : string[100] ;
END;
通过indy tcpclient发送 TSenddata到服务端。但是D2010找不到好的加密算法。只有一个AES可以用。但是只能加密字符串。这样会很麻烦。有没有好的加密方法。或者加密函数。能直接把senddata加密的?高分求教。
流加密可以参考
http://www.yesky.com/77/1781577_1.shtml
plain: TSendData;
strPlain : RawByteString;
begin
setlength(strPlain, sizeof(plain));
move(plain, strPlain[1], sizeof(plain));
aes(plain, key)
......
end
一般都是先有加密二进制、流,才有加密字符串的二进制record转为字符串很简单:
s:string;
r:Trecord;setlength(s,sizeof(r));
move(@r,s[1],sizeof(r));
var strPlain : RawByteString;
U:TSendData ;
begin
setlength(strPlain, sizeof(u));
move(u,strPlain[1],sizeof(u));
EncryptString(strPlain, HostKey);
是这样吗?前面的例子编不过去。我改了一下可以编了。不知道对不对。然后我如何把它还原成原来的senddata呢? 这个不是太懂。希望多指点下
var strPlain,test1,test2 : RawByteString;
U:TSendData ;
b:TSendData;
begin
u.U_name:= 'aaaaaaa';
u.U_psw:= '123123' ;
setlength(strPlain, sizeof(u));
move(u,strPlain[1],sizeof(u));
test1:=EncryptString(strPlain, '123');
test2:=DecryptString(test1,'123');
move(test2[1],b,sizeof(b));
showmessage(b.U_name);
showmessage(b.U_psw);
function EncryptStream(Src: TStream; Key: AnsiString;
var Dest: TStream; KeyBit: TKeyBit = kb128): Boolean;
function DecryptStream(Src: TStream; Key: AnsiString;
var Dest: TStream; KeyBit: TKeyBit = kb128): Boolean;