Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Olika resultat med SHA1 och encodings

Postades av 2004-05-27 10:01:12 - Fredrik Klarqvist, i forum asp.net generellt, Tråden har 6 Kommentarer och lästs av 616 personer

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...name=%20&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!

/Fredrik


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-27 12:33:37 - Herbjörn Wilhelmsen

Hej,

SHA1 arbetar med meddelandet som skall hashas och det hashade resultatet som bit-arrayer.

Jag vet inte om det finns någon standard för hur man skall omvandla bit-arrayen till sträng.

Det som borde vara samma för alla implementationer av sha1 är alltså att resultatet (i bit-array) skall vara samma när input (i bit-array) är samma.

Det viktigaste i detta sammanhanget är att du använder samma encoding när du hashar värdet för lagring och när du hashar ett värde för att jämföra med ett tidigare hashat värde. Men tyvärr känner jag inte till någon officiell rekommendation.

mvh
Herbjörn


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-27 13:04:22 - Fredrik Klarqvist

Tack för ditt svar!

...så du menar att det alltså är helt upp till den som implementerar algoritmen att använda en viss Encoding?

Men i system där data kan behöva utväxlas med andra system och kanske då skicka med en CheckSum, då innebär det alltså att dessa parter gemensamt måste komma överens om att använda samma encoding...och om dessa system sedan tidigare har olika encodings så funkar det alltså inte...

Låter lite si-sådär tycker jag...borde finnas någon slags "riktlinje" eller liknande som man bör gå efter... men men så vet man ju också att det här med standarder inte alltid funkar 100 heller...

Tack ändå!


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-27 18:13:50 - Johan Normén

Kör med basic64 encodning, det kör de flesta. Sedan får du tala om för de som ev vill göra en checksum att det är en base 64 string.

Mvh Johan


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-27 23:35:35 - Simon Dahlbacka

dom flesta hashfunktioner arbetar direkt på bitnivå och bryr sej inte om vad dom står för..
att du matar in nåt vettigt i hashfunktionen får du stå för..

..där har du också en av orsakerna till varför det är fiffigt att skippa non-ascii tecken i passwords å sånt..


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-28 00:12:45 - Andreas Håkansson

Fredrik,

Att använda <b>Encoding.Default</b> är inget jag skulle rekommondera om inte skall generera och validera på samma dator, dvs. om du skall göra detta med någon form av distribuerad lösning där hashing och validering sker på olika platser.

Anledningen till detta är för att <b>Default</b> är systemberoende och påverkas av regionsinställningar som man har i windows. Skulle du använda <b>Default</b> i en distribuerad miljö kan det bli så att det returnerar olika värden och då kommer du inte få samma resultat på de olika ställena. Istället är det bättre att använda t.ex <b>UTF-8</b> eller <b>UTF-16</b>.

Angående vad SHA1 dokumentationen säger så säger den faktiskt inget alls http://www.faqs.org/rfcs/rfc3174.html utan jag skulle nog vilja hävda att det är upp till dig att välja en lämplig. Vad är då en lämplig? .NET är en Unicode baserad miljö, men om du inte kan garantera att du bara kommer använda Unicode baserade hash så är det inte en bra kandidat, samma med ASCII.

Då har vi kvar <b>UTF-8</b> och<b>UTF-16</b> så du kan studera dessa och se vilken som passar dina behov bäst.

//Andreas


Svara

Sv: Olika resultat med SHA1 och encodings

Postades av 2004-05-28 08:48:12 - Fredrik Klarqvist

Tack för alla svar...! :)

Johan: Även om jag använder Base64 så måste jag ju använda en viss Encoding för att göra om min sträng till Bytes som sedan omvandlas till Base64, så då har man ändå samma problem (?).

Andreas: Nej, helt klart är det ju dumt att använda "Default". Jag tänkte snarare på att "ladda" den Encoding som kör Codepage 1252

Lösningen får väl helt enkelt bli att jag använder UTF-8 (då jag kör .NET) och vid behov får jag använda "Encoding.Convert" för att konvertera till någon annan Encoding. Har dock ej testar hur bra det funkar.


Nästa fråga blir hur man ska omvandla resultatet (bytes.en).
Jag ser följande möjligheter:

1. Gör om till HEX.
2. Gör om till HEX och gör Base64 på detta värde.
3. Gör om till Base64 direkt.

Då MS verkar använda HEX till det mesta i .NET så antar jag att förslag 1 är bäst.
Ex: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemreflectionassemblynameclasstopic.asp

"StrongName is the hexadecimal-encoded low-order 64 bits of the hash value of the public key generated using the SHA-1 hashing algorithm and the public key specified by SetPublicKey. PublicKeyToken is the hexadecimal-encoded public key specified by SetPublicKey."

...och även andra Hash.ar såsom MD5 producerar ju Hex-värden (http://www.faqs.org/rfcs/rfc1321.html)

Kommentarer på det?

Tack igen!

mvh Fredrik


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
1 442
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies