Sha-1 là gì? Nguyên lý hoạt động của sha-1?

1. Sha-1 là gì?

SHA-1 viết tắt của Secure Hash Algorithm 1 là một thuật toán sử dụng hàm Cryptographic Hash để thu thập đầu vào và cho ra các giá trị Hash 160 bit (20byte). Trong đó, giá trị Hash này được gọi là Message Digest, nó bao gồm một chuỗi các số thập lục phân dài 40 chữ số.  SHA-1 đã được phát triển bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) và được công bố vào năm 1993.

Ban đầu, nó được sử dụng rộng rãi trong các ứng dụng mật mã và bảo mật dữ liệu.

2. Ví dụ về thuật toán Sha-1?

Dưới đây là một ví dụ cơ bản về cách sử dụng thuật toán SHA-1 để tính giá trị hash của một chuỗi dữ liệu bất kỳ bằng Python:

import hashlib

# Dữ liệu đầu vào
data = “Hello, world!”

# Tạo một đối tượng SHA-1
sha1 = hashlib.sha1()

# Cập nhật đối tượng SHA-1 với dữ liệu đầu vào
sha1.update(data.encode(‘utf-8’))

# Tính giá trị hash
hash_value = sha1.hexdigest()

# In giá trị hash
print(“Giá trị hash SHA-1 của ‘{}’ là: {}”.format(data, hash_value))

Khi bạn chạy mã này, nó sẽ tính giá trị hash SHA-1 của chuỗi “Hello, world!” và in giá trị hash ra màn hình. Kết quả có thể trông giống như sau:

Giá trị hash SHA-1 của ‘Hello, world!’ là: 2ef7bde608ce5404e97d5f042f95f89f1c61e60db4

Lưu ý rằng giá trị hash SHA-1 này là một chuỗi hex (hệ cơ số 16) có độ dài 40 ký tự, và nó là một giá trị cố định dựa trên dữ liệu đầu vào cụ thể.

3. Nguyên lý hoạt động của sha-1?

 

SHA-1 (Secure Hash Algorithm 1) hoạt động bằng cách chuyển đổi một đoạn dữ liệu đầu vào thành một giá trị hash cố định có độ dài 160 bit (20 byte). Dưới đây là nguyên lý hoạt động cơ bản của SHA-1:

  1. Chuẩn bị dữ liệu đầu vào: Dữ liệu đầu vào (thường là một chuỗi byte) được chia thành các khối có độ dài cố định (512-bit hay 64-byte).
  2. Thêm bits padding: Để đảm bảo rằng dữ liệu có thể được chia thành các khối 512-bit, SHA-1 sẽ thêm các bits padding vào dữ liệu. Padding này bao gồm một bit “1” sau đó là một số bits “0” và cuối cùng là một phần ghi nhớ độ dài của dữ liệu ban đầu (dưới dạng một số nguyên 64-bit).
  3. Khởi tạo giá trị ban đầu (IV): SHA-1 sử dụng một bộ giá trị ban đầu cố định (Initialization Vector – IV) để bắt đầu quá trình hash. IV này được xác định trước và thường được thêm vào trong mã chương trình.
  4. Xử lý từng khối dữ liệu: Dữ liệu đầu vào được chia thành các khối 512-bit và sau đó được xử lý một khối sau một khối. Mỗi khối dữ liệu này được xử lý thông qua nhiều vòng lặp và phép toán logic.
  5. Xử lý trong các vòng lặp: Mỗi khối dữ liệu được chia thành năm 32-bit words, và trong mỗi vòng lặp của quá trình hash, các words này được sử dụng để tạo ra các giá trị tạm thời. Các phép toán logic như AND, OR, XOR và phép xoay (rotate) được sử dụng để biến đổi các words này.
  6. Kết hợp các giá trị tạm thời: Cuối cùng, các giá trị tạm thời được kết hợp lại với nhau để tạo ra giá trị hash cuối cùng. Giá trị này là một chuỗi bit cố định có độ dài 160-bit.
  7. Kết quả hash: Khi tất cả các khối dữ liệu đã được xử lý, giá trị hash cuối cùng được trả về là kết quả của quá trình SHA-1.
0/5 (0 Reviews)

Leave a Comment