最近才下载 了2010感觉挺不错的.以前的老程序.想用2010编译下.发现好多地方都不兼容.INDY9变成INDY10..改了半天.发现我以前用的DES算法都不能正常加密和解密的.加解密都是乱码.那位大大帮我解决下.不胜感谢.
解决方案 »
- delphi socket 局域网与外网通讯问题 高手帮帮忙
- Ado 连接 Excel的问题
- 怎样把二进制串转换成对应的十六进制字符串?
- 如何这样控制程序?
- 放分大调查:各位兄弟平时看的专业技术书籍是买还是借的?如果是买的平均一个月买几本?
- 不知道算不算钻牛角,但是我真的很想告明白
- 大家给我看一下这个sql语句那里错了??急,在线等
- Delphi初学者,请教一个关于编COS(X)的问题,谢谢~
- 用delphi 7開發,繁體'粦'字在Label,Edit中顯示'?',謝謝!
- 急!!!救命啊!
- 我一电脑安装多台打印机时,delphi6 自带Qreport报表打印如果指定打印机!
- 如何实现批量输出memo内容?
把String替换成AnsiString
还是不行哦.虽然可以加密.加出来是乱码.而且还不能解密
如果不是那就难办了.
function TEncdDecdObj.Encrypt(const Key, SrcStr: string): string;
var
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
keyStr,dest :string;
SrcPos :Integer;
SrcAsc :Integer;
Range :Integer;
begin
if Key='' then
keyStr:=EncryptDefaultKey
else keyStr:=Key;
KeyLen:=Length(keyStr);
KeyPos:=0;
Range:=$FFFF+1;
Randomize;
offset:=Random(Range);
dest:=format('%1.4x',[offset]);
for SrcPos := 1 to Length(SrcStr) do
begin
SrcAsc:=(Ord(SrcStr[SrcPos]) + offset) MOD $FFFF;
if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
SrcAsc:= SrcAsc xor Ord(keyStr[KeyPos]);
dest:=dest + format('%1.4x',[SrcAsc]);
offset:=SrcAsc;
end;
Result:=Dest;
end;function TEncdDecdObj.Decrypt(const Key, SrcStr: string): string;
var
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
keyStr,dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
begin
if SrcStr='' then exit;
if Key='' then
keyStr:=EncryptDefaultKey
else keyStr:=Key;
KeyLen:=Length(keyStr);
KeyPos:=0;
offset:=StrToInt('$'+ copy(SrcStr,1,4));
SrcPos:=5;
if copy(SrcStr,SrcPos,2)<>'' then
begin
repeat
SrcAsc:=StrToInt('$'+ copy(SrcStr,SrcPos,4));
if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(keyStr[KeyPos]);
if TmpSrcAsc <= offset then
TmpSrcAsc := $FFFF + TmpSrcAsc - offset
else
TmpSrcAsc := TmpSrcAsc - offset;
dest := dest + chr(TmpSrcAsc);
offset:=srcAsc;
SrcPos:=SrcPos + 4;
until SrcPos >= Length(SrcStr);
Result:=Dest;
end else Result:='';
end;