.NET에서 AES 암호화를 수행하기 위해 GPU를 이용할 수 있습니까? 그렇다면 어떻게?

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

문제

더블린 트리니티 칼리지의 흥미로운 논문 :
상품 그래픽 처리 장치에 대한 AES 암호화 구현 및 분석

그들의 기술은 OpenGL을 사용하여 GPU가 AES가 요구하는 숫자 변환을 수행하도록 GPU에 참여합니다.

관리 된 .NET 라이브러리를 통해이 기능 - 스트림 암호화 수행 -을 노출시키는 것이 얼마나 어려울까요?

어떻게 시작합니까? 힌트? 예?

편집하다: CUDA 또는 가속기를 사용하는 경험이있는 사람이 있습니까?

도움이 되었습니까?

해결책

Microsoft를 사용할 수 있습니다 액셀러레이터 도서관. .NET을 통해 GPU에 액세스 할 수 있습니다.

더 필요한 작업을 살펴본 후에는 AES 알고리즘을 다시 작성하는 것을 좋아하지 않는 한, 이것은 매우 사소한 일입니다. 그러나 가능합니다.

다른 C# API가있을 수 있지만 내가 만난 것은 탄력 성 API. 당신이해야 할 일은 Microsoft의 Accelerator API를 가져 와서 AES 알고리즘의 소스 코드 내에서 수학 조작이 수행되는 모든 곳에서 사용하는 것입니다.

다른 팁

CUDA/(C ++/CLI) 구현 주변에 관리 래퍼를 만드는 것이 좋습니다. 하지만 C#의 커널 자체. 실제로 고급 언어로 실제 커널 구현을 수행 할 수있는 방법은 없으며 CUDA를 사용하면 C를 사용해야하며 OpenGL/DirectX를 사용하면 셰이더를 사용해야합니다. 시작하려면 cuda.net을 살펴 보거나 Cuda SDK와 예제를 다운로드하여 GPGPU 프로그래밍에 소개됩니다.

또 다른 옵션입니다 수송아지 (웹 사이트는 ATM이 다운 된 것 같습니다).

웹 사이트 견적 :

브라흐마는 무엇입니까?

Brahma는 다양한 프로세서에서 병렬 스트리밍 계산에 대한 높은 수준의 액세스를 제공하기 위해 .NET 3.5 프레임 워크 (C# 3.0) 용으로 작성된 오픈 소스 라이브러리입니다. 현재 Brahma에는 GPU 제공 업체가 있고 그 초점은 GPGPU입니다. 모든 종류의 프로세서에서 실행되도록 조정할 수 있습니다.

브라마와 함께 무엇을 할 수 있습니까?

Brahma 2.0은 C# 3.0의 새로운 LINQ 구문을 사용하여 데이터의 스트리밍 변환을 지정합니다. Brahma를 사용하면 GPU에서 실행되는 진술과 CPU에서 단일 방법으로 실행되는 진술을 혼합 할 수 있습니다! 접착제 코드가 절대적으로 필요하지 않으면 개입 CPU 작업을 통한 복잡한 멀티 패스 GPU 계산을 몇 줄의 코드로 만 수행 할 수 있습니다. 필요한 모든 접착제 및 셰이더 코드는 Brahma에 의해 자동으로 생성됩니다. 높은 수준의 .NET 코드를 작성하면됩니다.

나는 그것을 사용하지 않았지만 방금 최근에 들었습니다. 팟 캐스트 .NET Rocks에서 그것에 대해. GPU 셰이더 언어를 배우고 싶지 않다면 사용하기에 좋은 라이브러리처럼 들립니다.

여기에 있습니다 Sourceforge 링크.

C#을 GPU에 통합하는 데 사용하는 것은 AES의 CUDA 구현을 사용해야합니다. 그들은 가장 빠릅니다. 가장 빠른 구현은 당신이 링크 한 것과 같은 사람들에게서 나오는 것처럼 보입니다. 트리니티 그룹. 최신 그래픽 하드웨어 용지의 실제 대칭 키 암호화를보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top