当前位置: 代码迷 >> VC >> DES加密的有关问题
  详细解决方案

DES加密的有关问题

热度:444   发布时间:2016-05-05 00:13:28.0
DES加密的问题
下面的加密函数,输入正确的参数(包括不超过10位的源串),返回的加密串是空值,不知道哪里出了问题,请各位高手帮忙看看:

String^ EnCrypt(String^ srcString,array<unsigned char>^ DESKey,array<unsigned char>^ DESIv)
{
DESCryptoServiceProvider^ DESalg = gcnew DESCryptoServiceProvider;
DESalg->KeySize = 64;
DESalg->Key = DESKey;
DESalg->IV = DESIv;
System::IO::MemoryStream^ mStream = gcnew System::IO::MemoryStream(100);
System::Text::ASCIIEncoding^ ascEncoding = gcnew System::Text::ASCIIEncoding;
array<unsigned char>^ chrArray = ascEncoding->GetBytes(srcString);
CryptoStream^ crpStream = gcnew CryptoStream(mStream,DESalg->CreateEncryptor(),CryptoStreamMode::Write); 
crpStream->Write(chrArray,0,chrArray->Length);
crpStream->Flush();
return ascEncoding->GetString(mStream->ToArray());
}

------解决方案--------------------
引用:
parhelia512,我验证了你的程序,这样确实没问题。但我改成用String^返回/传入密文后,解密函数就不行了(报错,“不正确的数据”)。
这就说明问题出在array->string->array,转换前和恢复出来的array不同
  相关解决方案