Hej, jag har testat att använda "SHA1Managed"-klassen och kommit fram till att den returnerar olika resultat beroende på vilken text-encoding man använder. Detta gäller främst vid användandet av svenska tecken. Detta gör att en .NET SHA1 skiljer sig från tex. PHP.s SHA1-metod.
Jag har gjort följande tester med strängen "hej världen".
Här är resultatet av olika encoders.
Använder .NET SHA1Managed-klassen och UTF8-encoding
BE68C1DF883EAF767C7339C0A6ACC04E432D2896
Använder .NET SHA1Managed-klassen och ASCII-encoding
26A73A7DF538D38D9DCF35170484185EBE79B52C
Använder .NET SHA1Managed-klassen och Unicode-encoding
0A5CFEC29562CB6325AC9307FA0A2D689DBCB0F8
Använder .NET SHA1Managed-klassen och "Default"-encoding
19CB538E8F34C13E2745617DAAF86EBD092D5D73
Använder "System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile"
BE68C1DF883EAF767C7339C0A6ACC04E432D2896 (Samam som UTF8)
Använder PHP-metoden "SHA1"
19CB538E8F34C13E2745617DAAF86EBD092D5D73 (Samma som "Default")
"Encoding.Default" använder "Codepage 1252" (Latin1: http://www.microsoft.com/typography/unicode/1252.htm?fname= &fsize=)
Så min fråga är: Vilken kodning ska jag använda?
Vad säger SHA1-standarden om text-encoding, vilken ska egentligen användas?
Enligt PHPs SHA1 så använder dem den implementation som anges i SHA1-RFC.n, vilket i så fall .NETs "HashPasswordForStoringinConfigFile" inte gör då den använder sig av UTF8.
Tack på förhand!