C语言的des加密函数没有返回值,如何封装为DLL供C#调用

fanshow 2010-09-30 02:57:20
头文件中定义了:
extern void deskey(unsigned char *, short);

在C编译器中调试如下,并通过
char str[]="tianshan";
deskey("0123456789abcdef",EN0);//第一个参数是key 第二个是字定义的加密解密的宏
des(str, str);
puts("加密后");
puts(str);


puts("解密后");
deskey("0123456789abcdef",DE1);
des(str, str);
puts(str);


des()没有返回值,如何封装供C#调用呢? 调用怎么接收str呢?
...全文
152 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanshow 2010-09-30
  • 打赏
  • 举报
回复
神啊 jointan 太厉害了
jointan 2010-09-30
  • 打赏
  • 举报
回复
        [DllImport("wdll.dll", EntryPoint = "des", CharSet = CharSet.Ansi )]
public static extern void des(string str, StringBuilder value);

public static string DES(string str)
{
StringBuilder sb = new StringBuilder(256);
des(str, sb);
return sb.ToString();
}
fanshow 2010-09-30
  • 打赏
  • 举报
回复
头文件:

extern "C" __declspec(dllexport) void deskey(unsigned char *, short);
extern "C" __declspec(dllexport) void des(unsigned char *, unsigned char *);//后一个参数是加密后的数据

C#中
[DllImport("wdll.dll", EntryPoint = "deskey", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

public static extern void deskey(string key, short mode);


[DllImport("wdll.dll", EntryPoint = "des", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

public static extern void des(string str, out string value);  //这里怎么报错呢
fanshow 2010-09-30
  • 打赏
  • 举报
回复
out 恩,我试验一下
xuld 2010-09-30
  • 打赏
  • 举报
回复
[DllImport("_____.dll")]
extern static void deskey(out string value, short i);
fanshow 2010-09-30
  • 打赏
  • 举报
回复
extern void des(unsigned char *, unsigned char *);
jointan 2010-09-30
  • 打赏
  • 举报
回复
extern "C" _declspec(dllexport) void __stdcall DES( OUT LPSTR lpszBuffer,IN LPCSTR lpszSource);
jinru2560 2010-09-30
  • 打赏
  • 举报
回复
unsigned char * 就是返回值
fanshow 2010-09-30
  • 打赏
  • 举报
回复
des(str, str); 中后面一个str是加密后的数据,怎么返回?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧