Hash/Mật mã

AES Encrypt/Decrypt

Mã hóa và giải mã văn bản bằng AES-GCM hoặc AES-CBC bằng mật khẩu (khóa được suy ra qua PBKDF2).

AES is the standard for symmetric encryption: the same password is used to both encrypt and decrypt. This tool derives an encryption key from your password with PBKDF2 and encrypts text with AES-GCM or AES-CBC — all locally in your browser.

How to use it

Common uses

Things to keep in mind

The IV (initialization vector) must be unique for every encryption performed with the same key — reusing a key+IV pair in GCM completely breaks the encryption's security.

AES-CBC without a separate integrity check (a MAC) is vulnerable to ciphertext-tampering attacks — that's why GCM, which combines encryption and authentication in one mode, is the safer default.

Bài viết về công cụ này: AES: mã hóa đối xứng hoạt động như thế nào

Câu hỏi thường gặp

AES ở đây hỗ trợ những kích thước khóa nào, và nên dùng khóa nào?

AES hỗ trợ khóa 128, 192 và 256-bit. AES-256 là khuyến nghị phổ biến cho ứng dụng mới, vì 128-bit đã được coi là an toàn, nhưng 256-bit mang lại biên độ an toàn thêm với chi phí thực tế không đáng kể.

Sự khác biệt giữa các chế độ mã hóa (như CBC, GCM) là gì?

GCM xác thực bản mã ngay khi mã hóa, nên cũng phát hiện được sự can thiệp, vì vậy đây là lựa chọn mặc định được khuyến nghị. CBC chỉ mã hóa và cần một MAC riêng để đảm bảo toàn vẹn, cùng với một IV ngẫu nhiên mỗi lần mã hóa để giữ an toàn.

Khóa hoặc văn bản gốc của tôi có được gửi đi đâu không?

Không. Toàn bộ việc mã hóa và giải mã chạy cục bộ trong trình duyệt của bạn thông qua Web Crypto API — không có gì được tải lên máy chủ.

Vì sao không nên dùng chế độ ECB?

ECB mã hóa từng khối một cách độc lập và giống hệt nhau, nên các khối văn bản gốc giống nhau cho ra các khối văn bản mã giống nhau — điều này để lộ cấu trúc dữ liệu (ví dụ các mẫu lặp lại trong hình ảnh vẫn có thể nhìn thấy ngay cả sau khi mã hóa). CBC hoặc GCM với IV duy nhất loại bỏ vấn đề này.

Điều gì xảy ra nếu dùng lại cùng một IV với cùng một khóa?

Đối với GCM đây là lỗi nghiêm trọng — việc dùng lại cặp khóa+IV làm mất hoàn toàn tính bảo mật và tính toàn vẹn của mã hóa. IV luôn phải là duy nhất cho mỗi lần mã hóa với cùng một khóa.

Bài viết: Hash/Mật mã

Hash Generator: MD5, SHA-1 và SHA-256 khác nhau ở điểm nào

Vì sao MD5 vẫn được dùng để kiểm tra tính toàn vẹn của tệp, nhưng không dùng cho mật khẩu.

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Vì sao checksum trùng khớp xác nhận tính toàn vẹn của một tệp, nhưng không xác nhận ai đã tạo ra nó.

HMAC: hash có khóa khác gì so với hash thông thường

Vì sao SHA-256 thông thường không bảo vệ khỏi việc giả mạo tin nhắn, nhưng HMAC thì có.

Bcrypt: vì sao mật khẩu được băm chậm chứ không nhanh

Vì sao SHA-256 nhanh là lựa chọn tồi cho mật khẩu, còn bcrypt chậm mới là lựa chọn đúng.

UUID: cách tạo ra định danh gần như không bao giờ trùng lặp

Vì sao UUID v4 có thể được tạo độc lập trên hàng triệu máy mà không có nguy cơ trùng lặp.

Trình tạo mật khẩu: điều gì thực sự làm cho mật khẩu mạnh

Vì sao mật khẩu dài gồm các từ trong từ điển mạnh hơn mật khẩu ngắn có ký hiệu và số.

Argon2: vì sao thuật toán này giành chiến thắng cuộc thi băm mật khẩu

Argon2 phòng thủ trước các cuộc tấn công bằng GPU tốt hơn các thuật toán băm mật khẩu cũ như thế nào.

Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

Vì sao scrypt cố ý đòi hỏi nhiều bộ nhớ để gây khó khăn cho việc dò trên thiết bị ASIC.

TOTP: mã dùng một lần trong ứng dụng xác thực hoạt động như thế nào

Vì sao mã trong Google Authenticator hoạt động không cần internet và chỉ đồng bộ với máy chủ qua thời gian.

PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất

Vì sao số lần lặp khuyến nghị của PBKDF2 tăng lên mỗi năm.

X.509: bên trong một chứng chỉ SSL có gì

Trình duyệt kiểm tra chính xác điều gì trong chứng chỉ của một trang web trước khi hiển thị ổ khóa xanh.

PGP: mã hóa bằng khóa công khai và khóa riêng hoạt động như thế nào

Vì sao có thể chia sẻ tự do khóa công khai PGP, nhưng không bao giờ chia sẻ khóa riêng.