2009-12-29 4 views
3

String.GetHashCode를 사용하여 디스크에 저장하는 실수를 저지른 기존 앱이 있습니다. 이제 앱을 .Net 2.0으로 업그레이드 했으므로 그 결정이 나를 엉덩이에 물린 채로 있음을 알았습니다..Net 2.0 코드로 구현 된 .Net 1.1 호환 String.GetHashCode가 있습니까?

누군가가 .Net 1.1 호환 문자열 해싱 알고리즘의 .Net 2.0 구현에 대해 알고 있는지 알고 싶습니다.

분명히 최선의 해결책은 타임머신을 구입하고 2002 년으로 돌아가서 이런 식으로 해시 코드를 사용하는 것을 고려해 본다는 것입니다. 그 가능성이 나타나지 않는 이후 나는 해결 방법을 찾고 있어요. 나는이 시스템에이 데이터가있는 기존 사용자를 보유하고 있으므로 해시 등의 큰 변환을 수행 할 수 없습니다.

2.0으로 변경하여 MD5 또는 SHA를 사용하도록 코드를 업데이트합니다.

Mono에서 String.GetHashCode 소스를 추출하는 것을 고려했지만 Mono는 GPL이고 내 앱은 실제로는 옵션이 아닙니다. 모노 구현이 MS .Net 구현과 호환되는지 여부조차 모르겠다. 왜냐하면 GetHashCode에 대한 계약은 호환이 필요하지 않기 때문이다.

아이디어가 있으십니까?

+0

해시 함수가 변경되었는지 확인 하시겠습니까? 이러한 변경 사항은 MSDN에 나와 있지 않습니다. – Amy

+0

내 이전 코멘트를 무시하십시오. 나는 그것을 여기에서 찾았다 : http://msdn.microsoft.com/en-us/netframework/aa497241.aspx – Amy

답변

6

당신은 단 하나하지 않은 것 같습니다 : Getting .NET 1.1 CLR String Hash Codes In The .NET 2.0 CLR (혐의, 내가 확인할 수 없습니다) BackCompatibleStringComparer에 대한 링크

이전 GetHashCode()의 구현을 보여줍니다.

+0

팁 주셔서 감사. 나는 StackOverflow가 나를 위해 올 것이라고 알았다. 2.0 프레임 워크에 포함되지만 공개적으로 액세스 할 수는 없다는 점이 흥미 롭습니다. DataObject와 엔터프라이즈 라이브러리에서 호출된다는 점이 흥미 롭습니다. 내부 개발자 중 일부가 내가 한 것과 동일한 실수를 저지른 것처럼 보일 것입니다. –

관련 문제