我最近從德爾福2007年拿了一些代碼,並將其升級到德爾福2009年。這可能也可能不相關。爲什麼在升級到Delphi 2007之後,我的加密工作不能正常工作?
但是當我在我的電腦上運行密碼時,密碼的解密不能正確解密。這是代碼。
Seed := GenerateIntFromString('usercode');
// Check if a password already exists
if TableUser.FieldByName('PASSWORD').AsString <> '' then
begin
EncodedPassword := TableUser.FieldByName('PASSWORD').AsString;
DecodedPassword := EncryptDecrypt(EncodedPassword, Seed);
//etc.. And the function
function TLogonForm.EncryptDecrypt(Input: string; Seed: integer) : string;
var
i : integer;
Output : string;
begin
RANDSEED := Seed;
Output := '';
for i := 1 to Length(Input) do
Output := Output + Chr(Ord(Input[i]) XOR (RANDOM(254) + 1));
Result := Output;
end;
所以,如果我的用戶代碼是TD ,我的密碼是 'JOEJOE'
加密的密碼是:I AP?
解密的passowrd是:JìEJùE
應該爲JOEJOE明顯解密。踢球者,如果我建立的代碼,併發送到另一個用戶的exe解密罰款。這使我相信它的代碼沒有問題,而與我的電腦有些異常。會是什麼呢?
你可以忽視這一點,因爲它可能不相關。我只提到它,因爲這是另一種情況,在一臺計算機上可以正常工作,而另一臺計算機卻可以。
但也有嘗試設置過濾器時,其中一個案例
TableUser2.Filter := FilterString;
它工作正常,我,但其他用戶得到一個錯誤。
TableUser2:錯誤3106:在記錄過濾器表達式中發現不支持的操作符。
即使當我們使用相同的代碼進行過濾時,也是如此。也許是數據庫問題?
我懷疑你告訴我們的代碼不是唯一的破解代碼。您的方法EncryptDecrypt沒有正確地從非Unicode Delphi移植到Unicode Delphi。你知道當然是一個字符串和一個字符,每個字符的字節大小,現在每個字符兩個字節? –
資源:http://stackoverflow.com/questions/1598211/delphi-conversion-unicode-issues –
我其實沒有意識到這一點。我剛剛開始使用此代碼。加密經驗有限。 Char信息如何幫助我?感謝p.s.我有你的鏈接。 – Trevor