当前位置:首页 » 密码管理 » delphi流加密算法

delphi流加密算法

发布时间: 2024-08-28 12:31:08

Ⅰ Delphi的MD5算法加密中文不正确,是啥原因

这种情况与语言用的汉字编码(内码)有关,看是UNICODE还是什么其他编码?windows版本不同用的编码也不同,表面显示的是“中国人”,其实内存中的二进制码不同,算出来的MD5当然不同。

Ⅱ 帮我分析一下这段DELPHI 就怎么算法加密的!

你的那段加密解密函数应该是用的这个吧?

//加密函数String:需要加密的字符串.Key密钥
FunctionEncrypKey(Src:String;Key:String):string;
var
idx:integer;
KeyLen:Integer;
KeyPos:Integer;
offset:Integer;
dest:string;
SrcPos:Integer;
SrcAsc:Integer;
TmpSrcAsc:Integer;
Range:Integer;

begin
KeyLen:=Length(Key);
ifKeyLen=0thenkey:='ThinkSpace';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
Randomize;
offset:=Random(Range);
dest:=format('%1.2x',[offset]);
forSrcPos:=1toLength(Src)do
begin
SrcAsc:=(Ord(Src[SrcPos])+offset)MOD255;
ifKeyPos<KeyLenthenKeyPos:=KeyPos+1elseKeyPos:=1;
SrcAsc:=SrcAscxorOrd(Key[KeyPos]);
dest:=dest+format('%1.2x',[SrcAsc]);
offset:=SrcAsc;
end;
Result:=Dest;
end;

//解密函数String:需要解密的字符串.Key密钥
FunctionUncrypKey(Src:String;Key:String):string;
var
idx:integer;
KeyLen:Integer;
KeyPos:Integer;
offset:Integer;
dest:string;
SrcPos:Integer;
SrcAsc:Integer;
TmpSrcAsc:Integer;
Range:Integer;
begin
KeyLen:=Length(Key);
ifKeyLen=0thenkey:='ThinkSpace';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
offset:=StrToInt('$'+(src,1,2));
SrcPos:=3;
repeat
SrcAsc:=StrToInt('$'+(src,SrcPos,2));
ifKeyPos<KeyLenThenKeyPos:=KeyPos+1elseKeyPos:=1;
TmpSrcAsc:=SrcAscxorOrd(Key[KeyPos]);
ifTmpSrcAsc<=offsetthen
TmpSrcAsc:=255+TmpSrcAsc-offset
else
TmpSrcAsc:=TmpSrcAsc-offset;
dest:=dest+chr(TmpSrcAsc);
offset:=srcAsc;
SrcPos:=SrcPos+2;
untilSrcPos>=Length(Src);
Result:=Dest;
end;

Ⅲ Delphi的MD5加密算法为什么加密中文有问题

md5是基于字节加密的,无论是delphi还是c#之类的,如果字符串编码不同(比如是用utf8、gbk还是unicode),那加密的结果自然都不一样。

Ⅳ DELPHI 中INI文件加密还原的问题

可以用异或加密算法。用明文的ASCII码值同密钥进行异或运算,得到密文,解密时用密文同密钥在进行异或运算即可得到明文

Ⅳ 如何用Delphi实现 淘宝接口加密解密SDK的功能

淘宝最新接口加密解密的功能,淘宝提供JAVA/PHP/.NET SDK:
自研SDK规范:
1. 加密算法要求:AES/CBC/PKCS5Padding,秘钥长度128位。
2. 获取密钥的缓存是否只应该放在内存中,在服务启动后从接口拉取。禁止存放在数据库、硬盘文件、OSS等持久化存储的地方。
3. 模糊查询部分功能,如不使用,可不实现。
4. 设置密钥的过期时间,过期重新拉取。秘钥的过期时间,在获取秘钥的接口会返回的,控制权在于top服务端。
秘钥获取接口 :taobao.top.secret.get
5. 请回传密钥的加密、解密调用次数。具体标准:加、解密调用函数每次调用,对应的计数器(各种类型计数器)会+1,5分钟左右同步一次。
异步线程会把计数器同步到top api接口: taobao.top.sdk.feedback.upload。
具体实现请参考 JAVA SDK。
最好用Delphi直接调用JAVA类实现加密解密。

Ⅵ Delphi加密算法

我用的加密解密
function EncryptString(Source, Key: string): string;
//对字符串加密(Source:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
randomize;
Offset := random(Range);
Dest := format('%1.2x', [Offset]);
for SrcPos := 1 to Length(Source) do
begin
SrcAsc := (Ord(Source[SrcPos]) + Offset) mod 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
Dest := Dest + format('%1.2x', [SrcAsc]);
Offset := SrcAsc;
end;
result := Dest;
end;
function UnEncryptString(Source, Key: string): string;
//对字符串解密(Src:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + (Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + (Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;

热点内容
电脑改文档服务器 发布:2025-01-11 16:41:14 浏览:868
编译汇编语言实例 发布:2025-01-11 16:36:55 浏览:669
海康ntp校时服务器地址 发布:2025-01-11 16:34:35 浏览:742
服务器运行超时怎么办 发布:2025-01-11 16:34:32 浏览:298
人妖迅雷种子ftp 发布:2025-01-11 16:33:04 浏览:915
python将列表转化为字符串 发布:2025-01-11 16:32:11 浏览:191
大疆稳定器wifi连接初始密码多少 发布:2025-01-11 16:25:36 浏览:889
专线服务器运行的项目如何访问 发布:2025-01-11 16:15:13 浏览:720
小米智能摄像机云存储 发布:2025-01-11 16:12:08 浏览:555
lnmpphp升级 发布:2025-01-11 16:12:07 浏览:326