最近因公司群發郵件程式需要給注冊一段時間沒有激活的用戶發激活郵件,郵件中有注冊密碼 需要還原發給用戶 但由於密碼加密是用C# 中的TripleDES完成,手頭上又沒有現成Delphi的實現。時間緊急,現翻譯是來不及了,於是經過查資料反復實施 終於成功實現在Delphi中調用 C# 封裝的DLL中的方法(Function)和過程(Procedure)現把實施步驟寫下,以供有需要的XDJM分享:
1、建立:DotNetFunc.cs 封裝要使用的Function、Procedure。
2、生成密鑰文件,用於給程序集強名稱簽名
sn -k key.snk
3、使用強名稱簽名,編譯成類庫
csc /t:library DotNetFunc.cs
4、生成類型庫
tlbexp DotNetFunc.dll /out:DotNetFunc.tlb
5、注冊dll
regasm DotNetFunc.dll
6、移入gac全局程序集緩存
gacutil -i DotNetFunc.dll
7、Delphi中的調用測試
uses Variants, COMOBJ, OleCtnrs, Activex;
procedure TForm1.Button1Click(Sender: TObject);
var
SharpObject: Variant;
TestValue: string;
begin
try
try
SharpObject := CreateOleObject('CSharpServer.SharpObject');
TestValue := SharpObject.DecryptTripleDES(Edit1.Text);
Edit2.Text :=TestValue;
except
on e: exception do
begin
ShowMessage(e.Message);
end;
end;
finally
SharpObject := Unassigned;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
SharpObject: Variant;
TestValue: string;
begin
try
try
SharpObject := CreateOleObject('CSharpServer.SharpObject');
TestValue := SharpObject.EncryptTripleDES(Edit2.Text);
Edit1.Text :=TestValue;
except
on e: exception do
begin
ShowMessage(e.Message);
end;
end;
finally
SharpObject := Unassigned;
end;
end;
initialization
CoInitialize(nil);
finalization
CoUninitialize;
end.