當前位置:首頁 » 密碼管理 » 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;

熱點內容
7z解壓很慢 發布:2025-01-11 16:51:23 瀏覽:940
電腦改文檔伺服器 發布:2025-01-11 16:41:14 瀏覽:869
編譯匯編語言實例 發布:2025-01-11 16:36:55 瀏覽:670
海康ntp校時伺服器地址 發布:2025-01-11 16:34:35 瀏覽:743
伺服器運行超時怎麼辦 發布:2025-01-11 16:34:32 瀏覽:298
人妖迅雷種子ftp 發布:2025-01-11 16:33:04 瀏覽:916
python將列表轉化為字元串 發布:2025-01-11 16:32:11 瀏覽:192
大疆穩定器wifi連接初始密碼多少 發布:2025-01-11 16:25:36 瀏覽:890
專線伺服器運行的項目如何訪問 發布:2025-01-11 16:15:13 瀏覽:720
小米智能攝像機雲存儲 發布:2025-01-11 16:12:08 瀏覽:556