如何将此C#代码转换为C ++ / CLI

时间:2011-10-14 23:35:48

标签: c# c++-cli

如何将此段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);

2 个答案:

答案 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的示例:

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/c0f97655-d953-4e3f-82b9-b70edaf1625b/