2011-09-07 2 views
4

제목과 마찬가지로 C# 용 HMAC-SHA1 구현을 찾고 있습니다. 이것은 마이크로 프레임 워크에서 실행되므로 내장 된 System.Security.Cryptography 클래스를 사용할 수 없습니다.C# 마이크로 프레임 워크 용 HMAC-SHA1 구현이 필요합니다.

원래 코드를 이해할 수 있다면 라이브러리를 이식하는 데 아무런 문제가 없습니다. Javascript에서 소스 코드를 찾은 후 예상 값과 일치하는지 확인했지만, 어떤 유형의 값인지 항상 알 수는 없으므로 이식하는 데 문제가 있습니다.

그렇다면 C# (또는 Java (또는 기타 강하게 입력 된)) 구현에 대해 알고있는 사람이 있습니까?

+0

이것을 확인하셨습니까? http://www.aarongifford.com/computers/sha.html. 'C'에서 끝난 것 같습니다. –

답변

4

Bouncycastle C# 암호화 라이브러리에는 자유롭게 사용이 허가 된 C# 소스 코드가 들어 있습니다. Org.BouncyCastle.Crypto.Digests.Sha1DigestOrg.BouncyCastle.Crypto.Macs.HMac 클래스를 추출하여 코드에 통합하는 것은 쉬운 일입니다. 그 .NET 클래스에 어떤 의존성도없는 것처럼 보이지만, 마이크로 프레임 워크에 어떤 클래스가 포함되어 있는지 알지 못합니다.

+0

이 방법은 최소한의 부수적 인 클래스를 사용하여 비교적 쉽게 추출 할 수 있었으며 참조 예제와 일치했습니다. 감사. – Hounshell

0

sphlib은 C 및 Java에서 SHA-1을 비롯한 많은 해시 함수에 최적화 된 코드가 포함 된 opensource 라이브러리입니다. Java 버전에는 일반 HMAC 구현 (구현 된 해시 함수 중 하나와 함께 사용할 수 있음)도 포함됩니다. 코드는 기본 정수 연산 만있는 기본 Java이므로 (J2ME 플랫폼에서도 실행 가능), C#으로 변환하는 것이 쉬워야합니다. Java의 '>>>'부호없는 오른쪽 시프트 연산자를 a로 변경해야합니다. 해당 C# 부호없는 형식으로 캐스팅 한 다음 규칙적인 오른쪽 시프트를 수행).

1

Mono 프로젝트에서 제공하는 코드를 사용하여 Microsoft와 동일한 API를 사용하여 C# 버전을 만들 수 있습니다. MIT X11 라이센스가있어 어떤 프로젝트에서도 쉽게 재사용 할 수 있습니다. 참조 :

https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs

https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Security.Cryptography/HMAC.cs

및 관련 파일을. 또한 플랫폼에서 올바르게 작동하는지 확인하는 데 사용할 수있는 단위 테스트가 있습니다.