Sự khác biệt giữa mã hóa SHA và AES là gì? [đóng cửa]


Câu trả lời:


120

SHA không phải là mã hóa, nó là một hàm băm một chiều. AES (Advanced_Encryption_Standard) là một tiêu chuẩn mã hóa đối xứng.

Tham chiếu AES


86

SHA là một họ "Thuật toán băm an toàn" đã được phát triển bởi Cơ quan An ninh Quốc gia. Hiện đang có sự cạnh tranh giữa hàng chục lựa chọn xem ai sẽ trở thành SHA-3 , thuật toán băm mới cho năm 2012+.

Bạn sử dụng các hàm SHA để lấy một tài liệu lớn và tính toán "thông báo" (còn gọi là "băm") của đầu vào. Điều quan trọng là phải nhận ra rằng đây là quá trình một chiều. Bạn không thể xem thông báo và khôi phục tài liệu gốc.

AES , Tiêu chuẩn mã hóa nâng cao là một thuật toán khối đối xứng. Điều này có nghĩa là nó cần các khối 16 byte và mã hóa chúng. Nó là "đối xứng" vì khóa cho phép cả mã hóa và giải mã.

CẬP NHẬT: Keccak được vinh danh là người chiến thắng SHA-3 vào ngày 2 tháng 10 năm 2012.


64

SHA và AES phục vụ các mục đích khác nhau. SHA được sử dụng để tạo mã băm dữ liệu và AES được sử dụng để mã hóa dữ liệu.

Đây là ví dụ về thời điểm hàm băm SHA hữu ích cho bạn. Giả sử bạn muốn tải xuống hình ảnh DVD ISO của một số bản phân phối Linux. Đây là một tệp lớn và đôi khi xảy ra sự cố - vì vậy bạn muốn xác thực rằng những gì bạn đã tải xuống là chính xác. Những gì bạn sẽ làm là truy cập một nguồn đáng tin cậy (chẳng hạn như điểm tải xuống bản phân phối chính thức) và họ thường có sẵn băm SHA cho hình ảnh ISO. Giờ đây, bạn có thể tạo hàm băm SHA có thể so sánh (sử dụng bất kỳ công cụ mở nào) cho dữ liệu đã tải xuống của mình. Bây giờ bạn có thể so sánh hai hàm băm để đảm bảo chúng khớp với nhau - điều này sẽ xác thực rằng hình ảnh bạn tải xuống là chính xác. Điều này đặc biệt quan trọng nếu bạn lấy ảnh ISO từ một nguồn không đáng tin cậy (chẳng hạn như torrent) hoặc nếu bạn gặp sự cố khi sử dụng ISO và muốn kiểm tra xem ảnh có bị hỏng hay không.

Như bạn có thể thấy trong trường hợp này, SHA đã được sử dụng để xác thực dữ liệu không bị hỏng. Bạn có mọi quyền để xem dữ liệu trong ISO.

Mặt khác, AES được sử dụng để mã hóa dữ liệu hoặc ngăn mọi người xem dữ liệu đó khi biết một số bí mật.

AES sử dụng khóa chia sẻ có nghĩa là cùng một khóa (hoặc một khóa liên quan) được sử dụng để mã hóa dữ liệu như được sử dụng để giải mã dữ liệu. Ví dụ: nếu tôi mã hóa một email bằng AES và tôi đã gửi email đó cho bạn thì bạn và tôi đều cần biết khóa chia sẻ được sử dụng để mã hóa và giải mã email. Điều này khác với các thuật toán sử dụng khóa công khai như PGP hoặc SSL.

Nếu bạn muốn kết hợp chúng với nhau, bạn có thể mã hóa một tin nhắn bằng AES và sau đó gửi cùng một hàm băm SHA1 của tin nhắn không được mã hóa để khi tin nhắn được giải mã, chúng có thể xác thực dữ liệu. Đây là một ví dụ hơi giả tạo.

Nếu bạn muốn biết thêm về một số thuật ngữ tìm kiếm Wikipedia này (ngoài AES và SHA), bạn muốn thử bao gồm:

Thuật toán khóa đối xứng (cho AES) Hàm băm mật mã (cho SHA) Mật mã khóa công khai (cho PGP và SSL)


1
Bạn hiểu câu trả lời này bao nhiêu tuổi khi bạn nhìn thấy từ DVD ...
Klesun

9

SHA là một hàm băm và AES là một tiêu chuẩn mã hóa. Với một đầu vào, bạn có thể sử dụng SHA để tạo ra một đầu ra mà rất khó có thể được tạo ra từ bất kỳ đầu vào nào khác. Ngoài ra, một số thông tin bị mất trong khi áp dụng hàm, vì vậy ngay cả khi bạn biết cách tạo ra một đầu vào tạo ra cùng một đầu ra, đầu vào đó có thể sẽ không giống với đầu vào được sử dụng ngay từ đầu. Mặt khác, AES có nghĩa là để bảo vệ khỏi tiết lộ cho bên thứ ba bất kỳ dữ liệu nào được gửi giữa hai bên chia sẻ cùng một khóa mã hóa. Điều này có nghĩa là khi bạn biết khóa mã hóa và đầu ra (và IV ...), bạn có thể quay lại đầu vào ban đầu một cách liền mạch. Vui lòng lưu ý rằng SHA không yêu cầu bất kỳ thứ gì ngoại trừ một đầu vào được áp dụng, trong khi AES yêu cầu ít nhất 3 phần mềm: thứ bạn đang mã hóa / giải mã, khóa mã hóa và vectơ khởi tạo (IV).


7

SHA là viết tắt của Secure Hash Algorithm trong khi AES là viết tắt của Advanced Encryption Standard. Vì vậy, SHA là một bộ thuật toán băm. Mặt khác, AES là một mật mã được sử dụng để mã hóa. Các thuật toán SHA (SHA-1, SHA-256, v.v.) sẽ lấy đầu vào và tạo ra một thông báo (băm), điều này thường được sử dụng trong quá trình ký kỹ thuật số (tạo ra một băm của một số byte và ký bằng khóa riêng) .


3

SHA không yêu cầu bất kỳ thứ gì ngoài một đầu vào được áp dụng, trong khi AES yêu cầu ít nhất 3 thứ - thứ bạn đang mã hóa / giải mã, khóa mã hóa và vectơ khởi tạo.


1
[Đây đã bị gắn cờ là "câu trả lời muộn cho câu hỏi cũ, do người dùng mới cung cấp. Nhận xét của tôi nằm trong ngữ cảnh đó.] Điều này dường như không thêm bất kỳ thông tin nào về những gì đã được cung cấp trong các câu trả lời khác cho câu hỏi này.
danfuzz

Đó là sai lầm. Bạn không cần vectơ khởi tạo (IV) để sử dụng AES. Một số chế độ hoạt động cho AES yêu cầu IV (hoàn toàn khác).
Hilder Vitor Lima Pereira
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.