我的加密/解密函数如下(是从网上下的):
function Crypt(s: string; Key: Word;
const bEncrypt: boolean): string; //将字符串加密解密,bEncrypt=True表示加密 False表示解密
const
SeedA = 12345; /// 常量,你可以修改
SeedB = 54329; /// 常量,你可以修改
var
i: integer;
ps, pr : ^byte;
begin
if bEncrypt then
s := s+#0;
SetLength(Result, Length(s));
ps := @s[1];
pr := @Result[1];
for i := 1 to length(s) do
begin
pr^ := ps^ xor (Key shr 8);
if bEncrypt then
Key := (pr^ + Key) * SeedA + SeedB
else
Key := (ps^ + Key) * SeedA + SeedB;
pr := pointer(integer(pr) + 1);
ps := pointer(integer(ps) + 1);
end;
end;
我把用户的信息加密后调用clientdataset.datarequest传到应用服务器
然后再在服务器端解密却得到了与原来不同的用户信息(是乱码)
如果是在本地加密解密这个函数却完全好用
服务器与客户端用olevariant类型传值,是否是加密后的信息在传输过程中一些不属于字符串(加密前是字符串)的信息给丢失了呢?
那么我该采用什么加密方式
希望多多指教.
对了,我希望你能告诉我的不仅仅是加密解密,只要能完成
保密性高的远程登陆,不管是控件或是函数或其他方式都可以的,谢谢
function Crypt(s: string; Key: Word;
const bEncrypt: boolean): string; //将字符串加密解密,bEncrypt=True表示加密 False表示解密
const
SeedA = 12345; /// 常量,你可以修改
SeedB = 54329; /// 常量,你可以修改
var
i: integer;
ps, pr : ^byte;
begin
if bEncrypt then
s := s+#0;
SetLength(Result, Length(s));
ps := @s[1];
pr := @Result[1];
for i := 1 to length(s) do
begin
pr^ := ps^ xor (Key shr 8);
if bEncrypt then
Key := (pr^ + Key) * SeedA + SeedB
else
Key := (ps^ + Key) * SeedA + SeedB;
pr := pointer(integer(pr) + 1);
ps := pointer(integer(ps) + 1);
end;
end;
我把用户的信息加密后调用clientdataset.datarequest传到应用服务器
然后再在服务器端解密却得到了与原来不同的用户信息(是乱码)
如果是在本地加密解密这个函数却完全好用
服务器与客户端用olevariant类型传值,是否是加密后的信息在传输过程中一些不属于字符串(加密前是字符串)的信息给丢失了呢?
那么我该采用什么加密方式
希望多多指教.
对了,我希望你能告诉我的不仅仅是加密解密,只要能完成
保密性高的远程登陆,不管是控件或是函数或其他方式都可以的,谢谢
我把在客户端加密后的字符串和服务器端接收到的还没有解密的字符串显示出来后
是完全一样的,只是解密以后得到的和原来的不同,一部分正确,一部分是乱码