如何将此段C#代码转换为C ++ / CLI:
protected string GetMD5HashFromFile(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
ASCIIEncoding enc = new ASCIIEncoding();
return enc.GetString(retVal);
}
特别是这部分byte[] retVal = md5.ComputeHash(file);
答案 0 :(得分:8)
自由使用C ++ / CLI中可用的堆栈语义来自动处理对象。仿真Holy C ++ RAII模式,即使代码抛出异常,对象也会被处理掉。可以将其视为编译器使用语句自动生成C#。看起来像这样:
using namespace System;
using namespace System::IO;
using namespace System::Security::Cryptography;
using namespace System::Text;
ref class Example {
protected:
String^ GetMD5HashFromFile(String^ fileName)
{
FileStream file(fileName, FileMode::Open);
MD5CryptoServiceProvider md5;
array<Byte>^ retVal = md5.ComputeHash(%file);
return Convert::ToBase64String(retVal);
}
};
答案 1 :(得分:0)
在这个问题的最佳答案中,有一个使用C ++加密服务提供程序生成MD5的示例: