Могу ли я использовать графический процессор для выполнения шифрования AES из .NET?Если да, то каким образом?

StackOverflow https://stackoverflow.com/questions/1221959

Вопрос

Интересная статья из Дублинского Тринити-колледжа:
Внедрение и анализ шифрования AES на стандартных графических процессорах

Их методика использует OpenGL, чтобы задействовать графический процессор для выполнения числовых преобразований, требуемых AES.

Насколько сложно было бы предоставить эту возможность - выполнять потоковое шифрование - через управляемую библиотеку .NET?

С чего бы мне начать?Намеки?Примеры?

Редактировать:У кого-нибудь есть опыт использования CUDA или Accelerator?

Это было полезно?

Решение

Вы можете использовать библиотеку ускорителя от Microsoft. Это дает вам доступ к графическому процессору через .NET.

После изучения работы, требующей большего, это довольно нетривиальная вещь (если вы не любите переписывать алгоритмы AES). Это возможно однако.

Там могут быть и другие API C #, но я встречал API Bouncy Castle , Что вам нужно сделать, это взять Microsoft Accelerator API и использовать его везде, где выполняется математическая операция в исходном коде алгоритма AES.

Другие советы

Я предлагаю создать управляемую оболочку вокруг реализации CUDA / (c ++ / cli) ИЛИ использовать cuda.net для выполнения всего но само ядро на c#.На самом деле нет способа выполнить фактическую реализацию ядра на языке высокого уровня, с CUDA вам нужно использовать c, с opengl / directx вам нужно использовать шейдеры.Для начала ознакомьтесь с cuda.net или загрузите CUDA SDK и примеры, чтобы получить представление о программировании на gpgpu.

Другой вариант - Брахма (веб-сайт, кажется, не работает).

Веб-сайт Цитата:

  

Что такое Брахма?

     

Brahma - это библиотека с открытым исходным кодом, написанная для платформы .NET 3.5 (в C # 3.0), для обеспечения высокоуровневого доступа к вычислениям параллельных потоков на различных процессорах.   Обратите внимание, что в настоящее время у Brahma есть поставщик графических процессоров (и его основной задачей является GPGPU), его можно адаптировать для работы на любом типе процессора.

     

Что я могу сделать с Брахмой?

     

Brahma 2.0 использует новый синтаксис LINQ в C # 3.0 для определения потокового преобразования данных. Используя Brahma, вы можете смешивать операторы, которые выполняются на GPU, и операторы, которые выполняются на CPU, в одном методе! Без обязательного клея кода требуется сложное многопроходное вычисление на GPU с промежуточными операциями на процессоре с помощью всего лишь нескольких строк кода. Весь необходимый код клея и шейдера автоматически генерируется Brahma. Все, что вам нужно сделать, это написать высокоуровневый код .NET.

Я не использовал его, но недавно прослушал подкаст про это .NET рулит. Это звучит как хорошая библиотека для использования, если вы не хотите изучать язык (и) шейдерного графического процессора.

Вот ссылка на sourceforge .

Что бы вы ни использовали для интеграции C # в GPU, вы должны использовать реализацию AES в CUDA. Они самые быстрые там. Самая быстрая реализация выглядит так, как если бы она была от тех, с кем вы общались - Trinity group . Посмотрите на Практическую криптографию с симметричным ключом на бумаге современного графического оборудования.

scroll top