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 ạ?

Tao Không Ngu. viết 17:24 ngày 01/10/2018

Hi Huy Hoàngg.
Bạn không hiểu chỗ nào ?

Huy Hoàngg viết 17:25 ngày 01/10/2018

E ko hiểu từ dòng byte[]… đến hết vòng lặp foreach ạ

Tao Không Ngu. viết 17:16 ngày 01/10/2018

Hi Huy Hoàngg.
Bạn xem doc của SHA1CryptoServiceProvider .

rogp10 viết 17:17 ngày 01/10/2018

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).

Kaiba Zax viết 17:22 ngày 01/10/2018

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

Huy Hoàngg viết 17:10 ngày 01/10/2018

Ra vậy cảm ơn ạ

Bài liên quan
0