2010-04-28 4 views
2

사전에 체크섬을 생성해야합니다. 키와 값.반복/부가 MD5

이 작업을 반복적으로 수행 할 수있는 간단한 방법이 있습니까?

foreach (dic.keys에있는 var 항목) 체크섬 + = 체크섬 (dic [항목]) + 체크섬 (항목);

이 경우 키와 값을 concatinated 문자열로 변환 한 다음 단일 체크섬을 적용 할 수 있지만 더 좋은 방법이 있습니까?

이상적으로 MD5이지만 다른 옵션도 사용할 수 있습니다. 이를 사용하여 몇 가지 저장 방법을 통해 전달되는 데이터의 유효성을 검사합니다. 체크섬은 AES를 사용하여 다른 정보와 함께 암호화되므로 이상적이며 깨지지 않는 체크섬에 대해 크게 걱정하지 않습니다.

답변

0

각 항목에 내가 생각하는 내 자신의 질문 ....

GetHashCode()를 응답. 확인되지 않은 {} 환경에 추가하십시오. 너무 간단합니다.

+0

기본적으로 메모리에있는 주소가 서명자와 확인 프로그램을 일치시킬 것으로 기대하고 있습니까? –

+1

체크섬이 얼마나 강한 지에 따라 다릅니다. 암호 학적으로 강한 체크섬을 원하면 GetHashCode()가 암호 학적으로 강력하지 않기 때문에 MD5 나 SHA1 또는 GetHashCode() *의 *가 강하지 않을 수 있기 때문에이 방법은 작동하지 않습니다. 물론 해시를위한 체크섬을 원한다면 GetHashCode()가 필요한 것입니다. – EMP

4

서명을 생성하는 과정은 MD5 해시 객체를 만든 다음 관심있는 모든 바이트를 다이제스트 한 다음 해시 값을 추출합니다. 중요한 것은 당신과 검증자가 해시 바이트와 해시 된 순서에 동의한다는 것입니다.

C#에서는 반복적으로 HashAlgorithm.TransformBlock을 호출하고 마지막으로 HashAlgorithm.TransformFinalBlock을 호출하여이 문제를 해결할 수 있습니다. 이것은 CryptoStream을 HashTransform (MD5이 ICryptoTransform을 구현)으로 사용하고 사전을 암호화 스트림에 쓰면 자동화됩니다.

해시를 소화하고 암호화하는 무수한 프로토콜과 암호화 체계가 야생에서 모욕당했습니다. 나는 구타 경로를 복용 제안하고 HMAC를 사용하여 잘 확립 된 산업 표준 ::

  • 를 사용 HMACMD5
  • 사용 RSA 서명을 (예. MD5 해시의 개인 키 암호화)를 참조하여 자신을 절약 할 수 모든 주요 프로비저닝 및 마스터 비밀 교환 문제에서 참조하십시오. RSACryptoServiceProvider.SignHash
0

MD5에 의존하는 새로운 코드를 작성하면 안됩니다. 더 이상 사용되지 않는 이유가 있습니다. SHA-256 또는 적어도 SHA-1을 사용해야합니다.

그리고 Remus의 조언을 받아야합니다. 암호화 + 해시 = 디지털 서명. 선반에서 물건을 내려서 (XML-Security가 아닌, 제발!), 그것을 배우고, 사용하고, 프로젝트의 다른 흥미로운 부분을 배우십시오.

+0

항목 그룹을 나타내는 단일 항목을 얻기 위해 해시 해시를 만드는 것은 암호화 해시와 관련하여 전례가 없습니다. 그러나 기본적으로 해시 강도가 두 배가된다는 것을 알아야합니다. 공격자는 이제 탬퍼 탐지를 두 번 할 수 있습니다. – Jason