Các cụm mật khẩu dễ nhớ gồm từ 4 đến 8 từ ngẫu nhiên trích từ danh sách tiếng Anh của BIP39.
Mã hóa / giải mã AES-GCM
Công cụ này được hiển thị bằng tiếng Anh; trang này giải thích về công cụ đó bằng ngôn ngữ của bạn.
Sử dụng Mã hóa / giải mã AES-GCM
Chức năng của nó là gì?
Mã hóa văn bản bằng AES-256-GCM và một cụm mật khẩu (passphrase), hoặc giải mã chuỗi Base64 do công cụ này tạo ra. Khóa là một lần băm SHA-256 duy nhất của cụm mật khẩu, vì vậy hãy dùng cụm mật khẩu dài và ngẫu nhiên.
Ứng dụng này hoạt động hoàn toàn trên trình duyệt của bạn: mọi thông tin bạn nhập vào đều không được tải lên.
Cách sử dụng Mã hóa / giải mã AES-GCM
- Nhập cụm mật khẩu. Gõ một cụm mật khẩu dài, ngẫu nhiên vào Password / Key. Trường này cũng chấp nhận giá trị trống, vốn không bảo vệ được gì.
- Dán văn bản. Đặt văn bản cần mã hóa, hoặc chuỗi Base64 do công cụ này tạo ra, vào Plaintext / Ciphertext.
- Mã hóa hoặc giải mã. Nhấn Encrypt (mã hóa) để nhận chuỗi Base64, hoặc Decrypt (giải mã) để chuyển chuỗi như vậy trở lại thành văn bản.
- Sao chép và chia sẻ an toàn. Nhấn Copy và gửi chuỗi Base64 qua một kênh. Chia sẻ cụm mật khẩu qua một kênh khác, ví dụ gặp trực tiếp hoặc qua điện thoại.
- Xử lý khi giải mã thất bại. Nếu Decrypt hiển thị Error: wrong key or invalid data, hãy kiểm tra từng ký tự của cụm mật khẩu và đảm bảo đã sao chép toàn bộ chuỗi Base64.
Ví dụ
Tin nhắn ngắn
Meet at the usual place at 10:00.sc/i5ncy6JbuW/+WPWQo6pboxhwf1K3tR7fOW49jHPXbZOVhlKrJEXqGkWJ31PqgI7moKwETaLovN0/tlA==Encrypt trả về Base64 của một IV ngẫu nhiên 12 byte, bản mã và tag 16 byte, khác nhau ở mỗi lần chạy. Hãy nhập cụm mật khẩu vào Password / Key trước: công cụ cũng chấp nhận giá trị trống, vốn không bảo vệ được gì.
Nó kiểm tra những gì
| Tín hiệu | Ý nghĩa của điều đó là gì |
|---|---|
| Khóa | SHA-256 của cụm mật khẩu, được dùng làm khóa AES-256. Không có salt và không có hàm dẫn xuất chậm, nên cùng một cụm mật khẩu luôn cho ra cùng một khóa. |
| 16 ký tự Base64 đầu tiên | IV 12 byte. Encrypt tạo IV ngẫu nhiên mới mỗi lần, nên cùng một văn bản cho kết quả khác nhau ở mỗi lần chạy. |
| Độ dài kết quả | IV 12 byte, rồi đến các byte của văn bản, rồi tag 16 byte, tất cả ở dạng Base64. Văn bản trống cho ra 40 ký tự; văn bản 23 byte cho ra 68 ký tự. |
| Error: wrong key or invalid data | Cụm mật khẩu khác (chữ hoa-thường và dấu cách đều được tính), chuỗi đã bị thay đổi hoặc cắt bớt, hoặc không phải Base64. GCM không trả về văn bản nào khi kiểm tra thất bại. |
| Không có header định dạng | Kết quả không mang dấu hiệu phiên bản hay thuật toán và không có dữ liệu liên kết (associated data), nên phần mềm khác cần đúng bố cục và cách dẫn xuất khóa này mới đọc được. |
| Đầu vào Base64 | Decrypt yêu cầu Base64 chuẩn như Encrypt tạo ra. Dấu cách và ngắt dòng do chương trình thư thêm vào được bỏ qua, nhưng thiếu hoặc đổi một ký tự sẽ khiến giải mã thất bại. |
| Chấp nhận cụm mật khẩu trống | Khi đó khóa là SHA-256 của chuỗi rỗng, mà ai cũng tính được, nên văn bản thực chất không được mã hóa. |
Các ví dụ khác
Giải mã một mẫu
Password / Key: example passphrase, not a real secret; Ciphertext: AAAAAAAAAAAAAAAAmdUgeZatb2KYwe2btQ+qgA3xKNnswXrrQ6AeKTDSu03TnrvNXygfDecrypt hiển thị Hello from PhishDestroy. Mẫu này được tạo với IV toàn số 0, tức phần AAAAAAAAAAAAAAAA ở đầu, chỉ để minh họa; Encrypt luôn dùng IV ngẫu nhiên.
Đổi một chữ cái của cụm mật khẩu
The same ciphertext with Password / Key: Example passphrase, not a real secretError: wrong key or invalid data
Mã hóa văn bản trống
Plaintext / Ciphertext empty, any passphrase, EncryptMột chuỗi Base64 dài 40 ký tự (IV 12 byte cộng tag 16 byte), khác nhau mỗi lần nhấn.
Câu hỏi thường gặp
Khóa được tạo từ cụm mật khẩu của tôi như thế nào?
Khóa AES-256 là một lần băm SHA-256 của cụm mật khẩu, không có salt và không có hàm dẫn xuất khóa chậm như PBKDF2 hay Argon2. Do đó, một cụm mật khẩu ngắn hoặc dễ đoán có thể bị dò nhanh bằng brute-force ngoại tuyến, vì vậy hãy dùng cụm dài và ngẫu nhiên, ví dụ từ Passphrase Generator.
Kết quả gồm những gì, và phần mềm khác có giải mã được không?
Base64 của một IV ngẫu nhiên 12 byte, tiếp theo là bản mã và tag xác thực GCM 16 byte. Khi giải mã, công cụ hiển thị Error: wrong key or invalid data (sai khóa hoặc dữ liệu không hợp lệ) nếu cụm mật khẩu sai hoặc bất kỳ byte nào bị thay đổi, và phần mềm khác chỉ giải mã được nếu dùng cùng khóa SHA-256 và cùng bố cục byte.
Văn bản hoặc cụm mật khẩu của tôi có bị gửi đi đâu không?
Không. Việc mã hóa chạy trong trình duyệt của bạn bằng Web Crypto API; cụm mật khẩu và văn bản không bao giờ bị tải lên hay lưu lại.
Tôi có nên mã hóa seed phrase ở đây không?
Không. Đừng bao giờ gõ seed phrase (cụm từ khôi phục) của ví vào một trang web, và khóa tạo từ một lần băm SHA-256 không có salt cho phép dò cụm mật khẩu yếu bằng brute-force ngoại tuyến. Hãy giữ seed phrase ngoại tuyến, ví dụ trên giấy hoặc kim loại, hoặc trong ví cứng.
Phần mềm khác có giải mã được kết quả không?
Có, nếu nó tuân theo cùng bố cục: khóa = SHA-256 của cụm mật khẩu dạng UTF-8, IV = 12 byte đầu, tag = 16 byte cuối, không có dữ liệu liên kết. Gói cryptography của Python và các thư viện AES-GCM khác có thể làm được điều này.
Tôi có thể dùng lại một cụm mật khẩu cho nhiều tin nhắn không?
Mỗi tin nhắn có một IV ngẫu nhiên 12 byte mới, nên việc dùng lại trên thực tế không làm lặp IV. Rủi ro thực sự nằm ở chính cụm mật khẩu: bất kỳ ai biết nó đều đọc được mọi tin nhắn được tạo bằng nó.
GCM bổ sung gì so với AES thông thường?
Một tag xác thực. Mọi thay đổi đối với IV, bản mã hoặc tag đều bị phát hiện, và việc giải mã sẽ thất bại thay vì trả về văn bản đã bị sửa đổi.