C#调用C++的AES加密库为什么显示不对呢
C++ dll库代码如下
C#调用
显示的结果与C++软件测试的不一样,而且数组传过去后再输出出来123456后面又多了一些字符,求告知为什么?新手不太懂
#include "AES.h"
#include<string.h>
#define AES_API __declspec(dllexport)
class AES {
AES_API unsigned char* Encrypt(unsigned char* str)
{
aes256_context ctx;
unsigned char key[32] = "123yr9012res012345678901";
unsigned char* buf = new unsigned char[256];
buf = str;
aes256_init(&ctx, key);
aes256_encrypt_ecb(&ctx, buf);
for (int i = 0; i < 256; i++)
printf("%c", buf[i]);
return buf;
}
AES_API unsigned char* Decrypt(unsigned char* str)
{
aes256_context ctx;
unsigned char key[32] = "123yr9012res012345678901";
unsigned char* buf = new unsigned char[256];
buf = str;
aes256_init(&ctx, key);
aes256_decrypt_ecb(&ctx, buf);
aes256_done(&ctx);
for (int i = 0; i < 256; i++)
printf("%c", buf[i]);
return buf;
}
}
;C#调用
[DllImport("AES.dll",EntryPoint = "Encrypt")]
extern static IntPtr Encrypt(byte[] str);
static void Main(string[] args)
{
string str = "123456";
byte[] bx = new byte[256];
bx = Encoding.Default.GetBytes(str);
Encrypt(bx);
}
显示的结果与C++软件测试的不一样,而且数组传过去后再输出出来123456后面又多了一些字符,求告知为什么?新手不太懂
...全文
相关推荐
AES-CBC-128(c#、cpp、php)
它基于Rijndael算法,提供强大的数据保护,适用于各种编程语言,包括C#、C++和PHP。在本文中,我们将探讨这三种语言如何实现AES-CBC-128的加解密过程。首先,我们来看C#的实现。
c++ AES 兼容 JAVA AES CBC PKCS5Padding C#
本文介绍了使用AES加密算法对字符串进行加密和解密的过程,涉及Rijndael类CRijndael的实现,支持ECB、CBC、CFB三种模式。代码包含密钥初始化、数据块处理及Base64编码等功能,并
常用的js加密库。MD5,AES,DES等
本文将深入探讨在JS中常用的加密库,包括MD5、AES和DES,以及如何使用CryptoJS这个加密库来实现这些加密算法。
C++/java/C#语言的AES加密解密
在描述中,提到了“纯C++代码开发,没调用API库”,这意味着这个实现是完全自包含的,没有依赖外部的加密库,这使得代码更便于移植到不同的平台或设备上,比如嵌入式系统。
AES,MD5加解密dll在C#代码中的调用.zip
DLL文件可以被多个进程共享,减少了内存占用,并且可以通过导出函数接口供其他程序调用。在本案例中,`AES.dll`是一个C++编写的动态链接库,它实现了AES加密和解密算法。


