Wymagam pewnej logicznej enkrypcji wykonanej w Javie do przekonwertowania w C# fragment kodu java jest następujący.Java MessageDigest klasa w C#
Jaki byłby ekwiwalent C# dla funkcji update(), Digest i reset?
Wymagam pewnej logicznej enkrypcji wykonanej w Javie do przekonwertowania w C# fragment kodu java jest następujący.Java MessageDigest klasa w C#
Jaki byłby ekwiwalent C# dla funkcji update(), Digest i reset?
W języku C# klasa to HashAlgorithm.
Równowartość zaktualizować jest albo TransformBlock(...)
lub TransformFinalBlock(...)
po ostatecznej wersji blok nazywa się (można też użyć pustego wkładu) można wywołać właściwość Hash
który daje wartość strawienia.
HashAlgorithm
może być wielokrotnego użytku po końcowy blok nazywa się (co oznacza, że jest resetowany na następny raz dzwonisz TransformBlock
), można dokładnie sprawdzić, czy HashAlogrithm
obsługuje ponowne wcale sprawdzając właściwość CanReuseTransform
.
Odpowiednikiem combo reset()/digest() jest jedna linia byte[] ComputerHash(byte[])
.
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(password.getBytes());
BigInteger hash = new BigInteger(1, md.digest());
hashword = hash.toString(16);
} catch (NoSuchAlgorithmException ex) {
/* error handling */
}
return hashword;
public static string HashPassword(string input)
{
var sha1 = SHA1Managed.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] outputBytes = sha1.ComputeHash(inputBytes);
return BitConverter.ToString(outputBytes).Replace("-", "").ToLower();
}
Dla Digest w C#, podobnie jak Java, można użyć klasy Windows.Security.Cryptography.Core. Na przykład, następujący sposób powraca do mieszania SHA256, sformatowanych base64:
public static string sha256Hash(string data)
{
// create buffer and specify encoding format (here utf8)
IBuffer input = CryptographicBuffer.ConvertStringToBinary(data,
BinaryStringEncoding.Utf8);
// select algorithm
var hasher = HashAlgorithmProvider.OpenAlgorithm("SHA256");
IBuffer hashed = hasher.HashData(input);
// return hash in base64 format
return CryptographicBuffer.EncodeToBase64String(hashed);
}
patrz (mbrit) How to create SHA-256 hashes in WinRT?