SORU
13 EYLÜL 2012, PERŞEMBE


Sha256 ile karma bir dize

Bir dize sha256, aşağıdaki kullandığım kod kullanarak karma için deneyin:

using System;
using System.Security.Cryptography;
using System.Text;
 public class Hash
    {
    public static string getHashSha256(string text)
    {
        byte[] bytes = Encoding.Unicode.GetBytes(text);
        SHA256Managed hashstring = new SHA256Managed();
        byte[] hash = hashstring.ComputeHash(bytes);
        string hashString = string.Empty;
        foreach (byte x in hash)
        {
            hashString  = String.Format("{0:x2}", x);
        }
        return hashString;
    }
}

Ancak, bu kod arkadaşlarım php, online olarak jeneratörler (This generator) kıyasla önemli ölçüde farklı sonuçlar verir

Herkes hatanın ne olduğunu biliyor mu? Farklı üsleri?

CEVAP
13 EYLÜL 2012, PERŞEMBE


Encoding.Unicode UTF-16 (çift geniş bir kodlama, tarihsel nedenlerden dolayı Windows dünyasında kullanılan ancak başkası tarafından kullanılan) için Microsoft'un yanıltıcı bir isim. http://msdn.microsoft.com/en-us/library/system.text.encoding.unicode.aspx

bytes dizinizi incelemek, her saniye byte 0x00 (çünkü çift geniş kodlama) olduğunu görürsünüz.

Bunun yerine Encoding.UTF8.GetBytes kullanıyor olması gerekir.

Ama aynı zamanda, farklı sonuçlar veya '\0' sonlandırıcı bayt karma olduğunuz veriler bir parçası olarak mı görüyorsunuz olup olmadığına bağlı olarak göreceksiniz. İki bayt karma "Hi" karma farklı bir sonuç verecektirüçbayt "Hi". Ne yapmak istediğinize karar verin. (Muhtemelen senin arkadaşının PHP kodu yapıyor hangisi yapmak istiyorum.)

ASCII metin, Encoding.UTF8 kesinlikle uygun olacaktır. Nişan alıyorsunmükemmeluyumluluk ile dostunun, hatta ASCII olmayan girişler, en iyisi dene bir kaç test çalışmaları ile ASCII olmayan karakterler gibi é görmek ister sonuç yine maç. Eğer değilse, size bir şey bul kodlama arkadaşın gerçekten kullanarak; bu belki bir 8-bit "kod sayfaları" eskiden popüler önce buluşun Unicode. (Yine, Windows herhangi biri hakkında endişelenmenize gerek ana nedeni olduğunu düşünüyorum "kod sayfaları".)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • Tutorials Junction

    Tutorials Ju

    1 Ocak 2014