用c写了个文件加密的dll,现在想用c#来实现,发现用c加密的文件c#解不出来,各位怎么解决啊
public static void func(Stream oldstream, Stream newstream, byte[] pwd)
{
const int c = 1024;
byte[] b = new byte[c];
int i = 0, j = 0;
long l = 0;
while ((i = oldstream.Read(b, 0, c)) > 0)
{
for (int k = 0; k < i; k++) b[k] = Convert.ToByte(b[k] ^ pwd[j >= pwd.Length ? 0 : j++]);
newstream.Write(b, 0, i);
newstream.Flush();
}
}
int func(char *in_fname,char *pwd,char *out_fname)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=0;
fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
return 0;
}
fp2=fopen(out_fname,"wb");
if(fp2==NULL)
{
fclose(fp1);
return 0;
}
while(pwd[++j0]);
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);
ch=fgetc(fp1);
}
fclose(fp1);fclose(fp2);
return 1;
}



{
const int c = 1024;
byte[] b = new byte[c];
int i = 0, j = 0;
long l = 0;
while ((i = oldstream.Read(b, 0, c)) > 0)
{
for (int k = 0; k < i; k++) b[k] = Convert.ToByte(b[k] ^ pwd[j >= pwd.Length ? 0 : j++]);
newstream.Write(b, 0, i);
newstream.Flush();
}
}
int func(char *in_fname,char *pwd,char *out_fname)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=0;
fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
return 0;
}
fp2=fopen(out_fname,"wb");
if(fp2==NULL)
{
fclose(fp1);
return 0;
}
while(pwd[++j0]);
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);
ch=fgetc(fp1);
}
fclose(fp1);fclose(fp2);
return 1;
}



...全文
相关推荐
C# 引用不同文件夹下的Dll文件
当我们的程序需要引用多个dll,太多的dll引起混乱时,我们是不是可以将dll分类在不同的目录呢?如何引用不同文件夹的Dll文件,将是我们的问题?
C#调用C语言DLL文件示范
C#调用C语言DLL文件示范 C#调用C语言DLL文件示范 C#调用C语言DLL文件示范
VC调用C#写的DLL
这个例子很好解决了, VC和C#之间的互调的问题
如何用C#实现自动注册DLL文件
C#有关技术资料,这里可以在C#中,实现帮助你注册DLL文件,而不用在注册表里面进行注册。
Demo: c/c++动态库(DLL)调用,c#等其他语言调用c/c++的DLL
c++动态库调用另一个动态库 c++动态库调用c动态库 c#等其他语言调用c/c++动态库


