01/10/2018, 15:09
Thắc mắc hàm băm SHA-1
private string EncodeSHA1(string pass)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(pass);
bs = sha1.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x1").ToLower());
}
pass = s.ToString();
return pass;
}
Em có tìm hiểu đoạn code hàm băm SHA-1 trên mạng nhưng vẫn chưa hiểu lắm. M.n có thể giải thích giúp e đc ko ạ?
Bài liên quan
Hi Huy Hoàngg.
Bạn không hiểu chỗ nào ?
E ko hiểu từ dòng byte[]… đến hết vòng lặp foreach ạ
Hi Huy Hoàngg.
Bạn xem doc của SHA1CryptoServiceProvider .
Bạn tìm hiểu
StringBuilder
nhé, đoạn mã này khá cơ bản (và phải biết, với immutable string còn quan trọng hơn nhiều).byte[] bs = System.Text.Encoding.UTF8.GetBytes(pass);
Chuyển pass từ chuỗi ra mảng byte
bs = sha1.ComputeHash(bs);
Băm mảng byte của pass
System.Text.StringBuilder s = new System.Text.StringBuilder(); foreach (byte b in bs) { .Append(b.ToString(“x1”).ToLower()); } pass = s.ToString(); return pass;));
Đoạn này chuyển kết quả từ byte[] sang string
Nó chạy giống pass=""; foreach (byte b in bs) { pass+=b.ToString(“x1”);} return pass;
Dư ToLower vì x1 đã là viết thường muốn viết hoa thì X1
Mấy bác có trả lời thì trả lời cho đàng hoàng không thì im đừng có tỏ ra ta đây
Ra vậy cảm ơn ạ