我们使用delphi作为win32开发,编写的rsa加密,需要在服务器使用公钥加密,而在客户端使用私钥解密.
本程序使用的加密dll为delphi所写,包含3个函数,其函数原形如下:
function CreateKey(var key:RsaKey):boolean;export; stdcall;
function EncryptRsa(key:pchar;commkey:pchar;text:pchar):pchar;export; stdcall;
function DecryptRsa(key:pchar;commkey:pchar;text:pchar):pchar;export; stdcall;
其中,在rsakey类型原形为function EncryptRsa(key:pchar;commkey:pchar;text:pchar):pchar;export; stdcall;
function DecryptRsa(key:pchar;commkey:pchar;text:pchar):pchar;export; stdcall;
type RsaKey=packed record
publickey:pChar;
privatekey:pChar;
commkey:pchar;
end;
在C#中首先需要DllImport将dll导入,并声明其外部方法.publickey:pChar;
privatekey:pChar;
commkey:pchar;
end;
public struct RsaKey
{
public string publicKey;
public string privateKey;
public string commKey;
}
[DllImport(@"Security.dll")]
public static extern string EncryptRsa(string key, string commkey, string text);
[DllImport(@"Security.dll")]
public static extern string DecryptRsa(string key, string commkey, string text);
[DllImport(@"Security.dll")]
public static extern bool CreateKey(ref RsaKey key);
{
public string publicKey;
public string privateKey;
public string commKey;
}
[DllImport(@"Security.dll")]
public static extern string EncryptRsa(string key, string commkey, string text);
[DllImport(@"Security.dll")]
public static extern string DecryptRsa(string key, string commkey, string text);
[DllImport(@"Security.dll")]
public static extern bool CreateKey(ref RsaKey key);
其中Rsakey对应struct.
其中的测试demo大家可以下载,包含c#以及delphi
--------------------------------
C#Demo DelphiDemo