1
A
回答
7
前段時間我寫了這段代碼,應該可以正常工作。
uses
System.Security.Cryptography,
System.Text;
type
TDynamicArrayOfByte = array of Byte;
function Encrypt(StrtoEncrypt, PK: string): TDynamicArrayOfByte; // pk, must be of a string of 32 characters
var
miRijndael: Rijndael;
encrypted: TDynamicArrayOfByte;
toEncrypt: TDynamicArrayOfByte;
bytPK: TDynamicArrayOfByte;
i: integer;
begin
Result := nil;
miRijndael := System.Security.Cryptography.RijndaelManaged.Create;
try
toEncrypt := System.Text.Encoding.UTF8.GetBytes(StrtoEncrypt);
bytPK := System.Text.Encoding.UTF8.GetBytes(PK);
miRijndael.Key := bytPK;
miRijndael.GenerateIV;
encrypted := (miRijndael.CreateEncryptor()).TransformFinalBlock(toEncrypt, 0, Length(toEncrypt));
setlength(result, Length(miRijndael.IV) + Length(encrypted));
for i:=0 to Length(miRijndael.IV)-1 do
result[i] := miRijndael.IV[i];
for i:=0 to Length(encrypted)-1 do
result[i + Length(miRijndael.IV)] := encrypted[i];
finally
miRijndael.Clear();
end;
end;
function DesEncrypt(BufferEncrypted: TDynamicArrayOfByte; PK: string): string; // pk, must be of a string of 32 characters
var
miRijndael: Rijndael;
encrypted: TDynamicArrayOfByte;
tempArray: TDynamicArrayOfByte;
bytPK: TDynamicArrayOfByte;
i : integer;
begin
Result := '';
miRijndael := System.Security.Cryptography.RijndaelManaged.Create;
setlength(tempArray, Length(miRijndael.IV));
setlength(encrypted, Length(BufferEncrypted) - Length(miRijndael.IV));
try
bytPK := System.Text.Encoding.UTF8.GetBytes(PK);
miRijndael.Key := bytPK;
for i:=0 to Length(tempArray)-1 do
tempArray[i] := BufferEncrypted[i];
for i:=0 to Length(encrypted)-1 do
encrypted[i] := BufferEncrypted[i + Length(tempArray)];
miRijndael.IV := tempArray;
Result := System.Text.Encoding.UTF8.GetString((miRijndael.CreateDecryptor()).TransformFinalBlock(encrypted, 0, Length(encrypted)));
finally
miRijndael.Clear();
end;
end;
再見。
0
渦輪增壓動力鎖箱,它提供了河豚,RSA,MD5,SHA-1,DES,三重DES 支撐,的Rijndael和消息的 數字簽名。
+2
非常適合Win32(顯然是Kylix),但不適用於.Net的Delphi。 – 2009-09-02 21:07:30
0
有一個在http://rcolonel.tripod.com/一些Delphi源。 YOu也許能夠在Delphi.net中使用它。但是,您可能會更好地找到.net模塊並使用它。您應該可以在delphi.net中使用c#或vb.net模塊。
0
Delphi加密頁面DCP加密組件包含Rijndael算法的實現。作者David Barton([email protected])http://www.scramdisk.clara.net/,DCP Crypto組件非常全面,可自由導出對稱密鑰加密組件。
相關問題
- 1. 你如何在Delphi 2007中使用F1幫助?
- 2. Delphi 2007幫助系統安裝「錯誤」
- 3. .NET AES/Rijndael算法 - 重用解密
- 4. 如何在Delphi 2007中使用HTML上下文敏感幫助 - 基本知識
- 5. Rijndael算法
- 6. 在.Net中使用GDI + interop幫助
- 7. Word 2007宏幫助
- 8. 幫助在.NET
- 9. 我可以在「Delphi 2007 for Win32」中使用.NET DLL嗎?
- 10. Dijkstra在Python中的算法幫助
- 11. 加密在IPHONE使用可可AES Rijndael算法,需要使用.NET
- 12. 在Delphi中設置RegularExpressions的幫助XE
- 13. 使用Rijndael算法和C#問題
- 14. 需要算法的幫助
- 15. 完成算法的幫助
- 16. 在Delphi 2007中使用Web服務
- 17. 如何解密PHP文本由Rijndael算法在.NET
- 18. 德爾福DEC庫(Rijndael算法)加密
- 19. 流幫助(.net)
- 20. 「Net stat」的幫助
- 21. .NET RegEx幫助
- 22. 求解算法中的幫助
- 23. PayPal PHP算法幫助
- 24. 算法幫助需要
- 25. 需要幫助在PHP的MySQL算法
- 26. 幫助製作算法
- 27. 算法需要幫助
- 28. 幫助逆解算法
- 29. 幫助理解該算法
- 30. A *星算法幫助C++
非常感謝,完美的作品:)。 – Salvador 2009-09-02 21:41:19
+1提示並且有用! – Argalatyr 2009-09-02 23:31:27
有人downvote這個答案?似乎很奇怪,因爲它是現貨。 – 2009-09-03 01:23:55