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
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ı".)
Derleme zamanı dize karma...
node.js karma dize?...
SHA-256 Java karma Dize)...
SHA256 karma kullanırken, ne kadar kar...
Hızlı Dize 32 bit tamsayı ile düşük ça...