2012-12-03 91 views
1

我曾在德爾福下面的代碼解密:德爾福反向解密函數

 new_size := Length(Source) - 1; 
     for c := 24 to new_size - 1 do 
     begin 
      v := Source[c]; 
      v := v - key; 
      v := v AND $FF; 
      x := v XOR (Source[c + 1]); 
      Source[c] := x; 
     end; 

其中

 Source: Array of Byte; 

     Key: Byte; 

任何一個快速知道如何扭轉這種(重新加密)?

+0

是什麼類型'v' ? –

+0

v也是字節類型,所以我認爲在這個版本中AND $ FF已經過時了...... –

+0

是的,如果v是字節,那麼$ FF是無意義的 –

回答

7

此代碼是代碼的問題相反:

for c := new_size - 1 downto 24 do 
    Source[c] := (Source[c] xor Source[c+1]) + key; 

而且在問題的代碼可以更簡單地這樣寫的:

for c := 24 to new_size - 1 do 
    Source[c] := (Source[c] - key) xor Source[c+1]; 
+0

非常感謝大衛我的英雄,像一個魅力 –