Как можно преобразовать этот код C # в C ++ / CLI - PullRequest
2 голосов
/ 15 октября 2011

Как я могу преобразовать этот сегмент кода 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 ]

8 голосов
/ 15 октября 2011

Свободное использование семантики стека, доступной в C ++ / CLI, для автоматического удаления объектов. Эмуляция шаблона RAII Holy C ++, объект удаляется даже тогда, когда код выдает исключение. Думайте об этом как о компиляторе, автоматически генерирующем 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);
    }
};
0 голосов
/ 15 октября 2011

Существует пример использования поставщика крипто-сервисов из C ++ для генерации MD5 в верхнем ответе на этот вопрос:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...