Mã Hóa & Giải Mã Văn Bản
Mã hóa AES-256-GCM, 100% trong trình duyệt của bạn.
Sử dụng AES-256-GCM qua Web Crypto API. Một IV ngẫu nhiên 96 bit và một salt 128 bit được tạo cho mỗi lần mã hóa. Mật khẩu được dẫn xuất qua PBKDF2 (100.000 lần lặp, SHA-256).
Cách sử dụng
- Chọn chế độ Mã hóa hoặc Giải mã.
- Nhập văn bản và mật khẩu của bạn.
- Nhấp nút hành động · kết quả xuất hiện bên dưới.
- Để giải mã, dán đầu ra đã mã hóa và sử dụng cùng mật khẩu.
Câu hỏi thường gặp
Mã hóa này có an toàn không?
Có. AES-256-GCM là mã hóa cấp quân sự. Kết hợp với dẫn xuất khóa PBKDF2 (100k lần lặp), nó cung cấp bảo vệ mạnh mẽ. Tuy nhiên, bảo mật phụ thuộc vào độ mạnh của mật khẩu của bạn.
Bạn có thể khôi phục mật khẩu của tôi không?
Không. Mọi thứ chạy trong trình duyệt của bạn. Chúng tôi không bao giờ thấy văn bản hoặc mật khẩu của bạn. Nếu bạn mất mật khẩu, văn bản đã mã hóa không thể khôi phục.
Định dạng của đầu ra là gì?
Đầu ra đã mã hóa là một chuỗi Base64 chứa salt, IV và văn bản đã mã hóa. Chỉ cần dán lại vào công cụ để giải mã.
Điều Gì Thực Sự Xảy Ra Khi Bạn Nhấp Mã Hóa
Các mật mã đối xứng như AES dùng cùng một khóa để mã hóa và giải mã. Điều đó có nghĩa là bất kỳ ai nắm giữ khóa đều có thể khóa và mở khóa dữ liệu, vì vậy toàn bộ thách thức khi sử dụng một khóa thu gọn thành một câu hỏi duy nhất: làm thế nào để người gửi và người nhận chia sẻ khóa mà không để lộ nó? Câu trả lời của công cụ này là «bạn tự xử lý điều đó», hãy thỏa thuận mật khẩu qua một kênh đáng tin cậy riêng biệt, sau đó cả hai dán cùng một chuỗi vào đây.
Phía sau hậu trường, công cụ chạy bốn bước thông qua Web Crypto API gốc của trình duyệt:
- Kéo dài mật khẩu thành một khóa. Mật khẩu là một chuỗi ngắn, độ entropy thấp; khóa AES-256 là 32 byte dữ liệu ngẫu nhiên có độ entropy cao. Công cụ đưa mật khẩu của bạn qua PBKDF2-HMAC-SHA-256 với 100.000 vòng lặp (được chỉ định trong RFC 8018) cộng với một muối ngẫu nhiên 128-bit. Muối làm cho mỗi lần mã hóa tạo ra một khóa khác nhau ngay cả khi bạn tái sử dụng mật khẩu, loại bỏ các cuộc tấn công rainbow-table. Số vòng lặp làm chậm quá trình đoán brute-force trên mỗi lần thử.
- Tạo nonce mới. IV ngẫu nhiên 96-bit (độ dài được NIST khuyến nghị cho AES-GCM) được tạo thông qua
crypto.getRandomValues: nguồn ngẫu nhiên an toàn về mặt mật mã học giống như trình duyệt sử dụng cho TLS. - Mã hóa bằng AES-256-GCM. Plaintext được mã hóa thành các byte UTF-8 và đưa qua AES-256 ở Galois/Counter Mode, tạo ra ciphertext cộng với thẻ xác thực 128-bit.
- Đóng gói và mã hóa Base64. Muối, IV và ciphertext+tag được nối vào một blob nhị phân duy nhất và mã hóa Base64 để nó truyền an toàn qua email, chat hoặc bất kỳ nơi nào khác mong đợi ASCII.
Tại Sao Lại Là AES-256-GCM
AES (Advanced Encryption Standard) là mật mã đối xứng NIST chọn vào năm 2000 từ một cuộc thi công khai với 15 ứng viên. Thiết kế giành chiến thắng là Rijndael của các nhà mật mã học người Bỉ Joan Daemen và Vincent Rijmen, được chính thức hóa là FIPS PUB 197 vào ngày 26 tháng 11 năm 2001. NIST phê duyệt ba kích thước khóa (128, 192, 256 bit) và NSA phê duyệt cả ba cho dữ liệu SECRET, với AES-256 cũng được phê duyệt cho TOP SECRET. Sau hơn hai thập kỷ kiểm tra công khai vẫn không có cuộc tấn công thực tế nào chống lại AES được triển khai đúng cách, bản thân mật mã này về cơ bản không thể phá vỡ, vì vậy lập luận bảo mật chuyển hoàn toàn sang quản lý khóa và độ mạnh mật khẩu.
Một block cipher như AES chỉ mã hóa một khối 128-bit có kích thước cố định, vì vậy bất kỳ tin nhắn thực nào đều cần một chế độ hoạt động để ghép các khối lại với nhau. Chế độ quan trọng không kém gì mật mã. Mặc định cũ khét tiếng, ECB: mã hóa mỗi khối độc lập, điều này làm lộ các mẫu; hình ảnh nổi tiếng «ECB Penguin» của Tux vẫn còn nhận ra được sau khi mã hóa là minh họa cảnh báo tiêu chuẩn. Nhiều công cụ «AES» trực tuyến cũ hơn vẫn còn lộ ECB; công cụ này thì không.
GCM (Galois/Counter Mode), được thiết kế bởi McGrew và Viega và được NIST chuẩn hóa trong SP 800-38D (tháng 11 năm 2007), kết hợp mã hóa counter-mode với thẻ xác thực trường Galois. Đây là chế độ AEAD (Authenticated Encryption with Associated Data), nghĩa là nó cung cấp tính bảo mật và tính toàn vẹn trong một thao tác. Nếu một byte duy nhất của đầu ra mã hóa bị đảo, quá trình giải mã sẽ báo lỗi thay vì trả về plaintext rác. Chế độ TLS 1.2 và TLS 1.3 cũng sử dụng. Đây thực sự là chế độ chủ lực của mật mã internet hiện đại.
Mật Khẩu Không Phải Là Khóa
Khóa AES-256 là 32 byte entropy đồng đều. Mật khẩu của người dùng (dù mạnh) ngắn, chủ yếu là ASCII có thể in, và tập trung xung quanh các mẫu từ điển. Bạn không thể đưa mật khẩu trực tiếp vào AES mà không có sự hỗ trợ. Sự hỗ trợ đó là một hàm dẫn xuất khóa dựa trên mật khẩu (KDF). PBKDF2, scrypt và Argon2 là ba hàm bạn sẽ thấy trong code hiện đại:
- PBKDF2 (RFC 8018), hàm gốc. Lặp đi lặp lại một hàm giả ngẫu nhiên HMAC nhiều lần. Nhanh trên CPU, nhưng không memory-hard: GPU và ASIC bẻ khóa hash PBKDF2 nhanh hơn nhiều so với số vòng lặp gợi ý trên máy tính thông thường. Công cụ này sử dụng PBKDF2 vì đây là KDF mật khẩu duy nhất mà Web Crypto API cung cấp gốc, Argon2 và scrypt sẽ yêu cầu đóng gói thêm JavaScript hoặc WebAssembly.
- scrypt (RFC 7914, 2016, của Colin Percival)) thêm tính memory-hard: buộc kẻ tấn công phải cấp phát một khối RAM lớn cho mỗi lần đoán, đánh bại phần cứng song song giá rẻ.
- Argon2id (RFC 9106, 2021), người chiến thắng Cuộc thi Hashing Mật khẩu năm 2015; khuyến nghị ưu tiên hàng đầu hiện tại của OWASP. Memory-hard, kháng side-channel.
Lưu ý thành thật: 100.000 vòng lặp PBKDF2 là cao hơn nhiều so với ngưỡng RFC gốc là 1.000, nhưng thấp hơn hướng dẫn OWASP năm 2026 hiện tại là 600.000 cho PBKDF2-SHA-256. Sự đánh đổi là thời gian mã hóa trên điện thoại chậm, ở 600.000 vòng lặp, việc dẫn xuất khóa trên thiết bị Android ngân sách bắt đầu tạo ra độ trễ đáng chú ý. Đối với các bí mật lâu dài quan trọng, hãy chọn mật khẩu dài hơn để bù đắp, hoặc sử dụng trình quản lý mật khẩu chuyên dụng, thường sử dụng Argon2id với các tham số mạnh hơn.
Muối và IV, Trông Giống Nhau nhưng Làm Những Việc Khác Nhau
- Muối là đầu vào cho hàm dẫn xuất khóa. Nó làm cho ánh xạ password→key là duy nhất cho mỗi lần mã hóa, vì vậy một ciphertext bị đánh cắp không thể bị bẻ khóa bằng bảng precomputed của các khóa mật khẩu phổ biến. Muối không cần phải bí mật, chỉ cần duy nhất và không thể dự đoán.
- IV / nonce là đầu vào cho chế độ mật mã. Cụ thể với AES-GCM, đây là điểm bắt đầu counter 96-bit. Nó phải là duy nhất cho mỗi cặp (khóa, tin nhắn); việc tái sử dụng một IV là thảm họa trong GCM, nó cho phép kẻ tấn công khôi phục khóa GHASH và giả mạo các ciphertext tùy ý. Công cụ tạo IV ngẫu nhiên mới từ
crypto.getRandomValuesmỗi lần mã hóa, điều này tránh được rủi ro đó.
Khi Nào Nên Dùng và Khi Nào Không
Công cụ phù hợp khi:
- Bạn cần chia sẻ một tin nhắn bí mật đơn lẻ qua một kênh không đáng tin cậy (email, Slack, SMS, ứng dụng ghi chú) và bạn có một kênh đáng tin cậy riêng biệt (cuộc gọi điện thoại, gặp mặt trực tiếp, chat Signal) nơi bạn có thể chuyển giao mật khẩu.
- Bạn muốn mã hóa một đoạn cục bộ trước khi dán vào tài liệu đám mây hoặc ứng dụng ghi chú, để ngay cả khi nhà cung cấp bị xâm phạm, nội dung vẫn không thể đọc được.
- Bạn cần một «phong bì kín» đính kèm vào một quy trình làm việc với đối tác đã thỏa thuận mật khẩu bằng miệng.
Công cụ không phù hợp khi:
- Bạn và người nhận không có bí mật chia sẻ trước và không có kênh ngoài băng tần. Gửi mật khẩu qua cùng kênh với ciphertext là vô nghĩa, bất kỳ ai có thể đọc ciphertext cũng có thể đọc mật khẩu. Đây là vấn đề phân phối khóa kiểu gà-và-trứng kinh điển mà mật mã public-key tồn tại để giải quyết.
- Bạn cần forward secrecy. Signal và TLS 1.3 tạo ra một khóa tạm thời khác nhau cho mỗi phiên, vì vậy một rò rỉ hôm nay không làm lộ các tin nhắn trước. Một mật khẩu cố định duy nhất cho thuộc tính ngược lại: bất kỳ ai biết mật khẩu đều có thể giải mã mọi tin nhắn bạn đã từng mã hóa bằng nó.
- Bạn cần chứng minh ai đã mã hóa điều gì đó. AES với mật khẩu chia sẻ chứng minh việc sở hữu mật khẩu, không phải quyền tác giả. Để ký số, hãy dùng PGP, age hoặc S/MIME.
- Bạn đang mã hóa ở quy mô lớn hoặc cho nhiều người nhận. Mỗi người nhận cần một mật khẩu được chia sẻ riêng và việc luân chuyển rất phức tạp. Các công cụ bất đối xứng (age, PGP) và máy chủ khóa kiểu Signal xử lý điều này tốt hơn.
Một mô hình tư duy hữu ích: AES với mật khẩu là tương đương kỹ thuật số của ổ khóa hành lý kết hợp với cuộc điện thoại để chia sẻ mã. Nó hoạt động hoàn hảo nếu bạn có thể tin tưởng cuộc điện thoại. Nó không phải là sự thay thế cho nhắn tin mã hóa đầu cuối như Signal, vốn tự động hóa trao đổi khóa và cung cấp forward secrecy thông qua giao thức Double Ratchet của nó.
Như Thế Nào Mới Là Mật Khẩu «Đủ Mạnh»?
Vì bản thân mật mã không thể phá vỡ, toàn bộ bảo mật của sơ đồ phụ thuộc vào mật khẩu của bạn. Toán học liên quan là entropy: H = L × log₂(N), trong đó L là độ dài và N là kích thước bộ ký tự bạn đang lấy ngẫu nhiên. Ví dụ minh họa:
- 8 chữ thường ngẫu nhiên → khoảng 37 bit. Có thể bẻ khóa trong vài giờ trên GPU hiện đại.
- 8 ký tự hỗn hợp chữ hoa/thường với chữ số và ký hiệu → khoảng 52 bit. Vài giờ đến vài ngày ở tốc độ hiện đại.
- 12 ký tự hỗn hợp chữ hoa/thường với chữ số và ký hiệu → khoảng 79 bit. Vượt quá ngân sách tấn công thực tế trong tương lai có thể thấy trước.
- Sáu từ ngẫu nhiên từ danh sách Diceware 7.776 từ → khoảng 78 bit. Bảo mật tương đương khoảng 12 ký tự ngẫu nhiên nhưng dễ ghi nhớ hơn nhiều.
Mật khẩu do người chọn yếu hơn đáng kể: nghiên cứu được trích dẫn trong hướng dẫn NIST ước tính trung bình khoảng 40 bit, đó là lý do tại sao các cuộc tấn công từ điển chiếm ưu thế so với brute force thuần túy. Lời khuyên hiện tại của NIST SP 800-63B cho các bí mật được ghi nhớ: tối thiểu 8 ký tự, cho phép ít nhất 64, không áp đặt quy tắc cấu trúc (chúng đẩy người dùng đến các mẫu có thể dự đoán như Password1!), không yêu cầu luân chuyển định kỳ, và kiểm tra với danh sách mật khẩu đã bị lộ. Hướng đến «dài, dễ nhớ, chưa từng bị lộ.» Một cụm mật khẩu ngẫu nhiên bốn đến sáu từ mà bạn thực sự có thể nhớ vượt trội so với mật khẩu 8 ký tự «phức tạp» kiểu tra tấn mọi lúc.
Vị Trí của Nó So Với Các Công Cụ Mã Hóa Khác
- TLS / HTTPS mã hóa trong quá trình truyền giữa bạn và một máy chủ. Bản thân máy chủ có thể đọc mọi thứ sau khi đến nơi. Giải quyết vấn đề kẻ nghe lén, không phải vấn đề máy chủ.
- Signal / WhatsApp / iMessage là mã hóa đầu cuối đầy đủ với trao đổi khóa tự động và forward secrecy. Giải quyết cả hai, nhưng yêu cầu cả hai bên sử dụng cùng ứng dụng.
- PGP / age là bất đối xứng, bạn mã hóa với khóa công khai đã xuất bản của ai đó mà không cần bí mật chia sẻ trước. Giải quyết phân phối khóa, nhưng lịch sử khó sử dụng;
agelà giải pháp thay thế tối giản hiện đại. - Mã hóa đĩa cấp OS (FileVault, BitLocker, LUKS) mã hóa dữ liệu ở trạng thái nghỉ trên một thiết bị duy nhất sử dụng AES-XTS. Mô hình mối đe dọa khác: bảo vệ trước trộm thiết bị, không phải chặn mạng.
- Trình quản lý mật khẩu sử dụng AES-GCM (hoặc tương tự) với KDF mạnh (thường là Argon2id hiện nay) bên trong một vault mã hóa đồng bộ ciphertext qua backend nhà cung cấp không thể đọc được.
Một công cụ mã hóa văn bản dựa trên mật khẩu là thành viên ít chuyên biệt nhất của gia đình này, mật mã thuần túy không có quan điểm về danh tính, truyền tải hay lưu trữ. Sự tối giản đó chính là sức hút: đây là công cụ phù hợp khi bạn cụ thể chỉ cần AES-256 với mật khẩu và không có gì khác.
Thêm Câu Hỏi
Đây có phải là mã hóa đầu cuối không?
Theo một nghĩa nào đó là có, quá trình mã hóa xảy ra hoàn toàn trong trình duyệt của bạn và Absolutool không bao giờ thấy plaintext hoặc mật khẩu. Theo nghĩa nghiêm ngặt mà các sản phẩm nhắn tin như Signal sử dụng, thì không: Signal còn cung cấp thêm trao đổi khóa bất đối xứng tự động và ràng buộc danh tính để người dùng không cần kênh đáng tin cậy riêng biệt để chia sẻ mật khẩu. Công cụ này thực hiện phần mã hóa mà không có những tính năng bổ sung đó, điều này khiến việc chuyển giao mật khẩu là trách nhiệm của bạn.
Có tính năng khôi phục «quên mật khẩu» không?
Không, theo thiết kế. Công cụ không bao giờ thấy mật khẩu của bạn và không bao giờ lưu trữ bất cứ thứ gì. Nếu bạn mất mật khẩu, văn bản mã hóa không thể khôi phục được. Hãy lưu mật khẩu trong trình quản lý mật khẩu hoặc ghi ra đâu đó bằng vật lý.
Tại sao đầu ra mã hóa trông như Base64 ngẫu nhiên?
Vì đó chính xác là những gì nó là. Muối, IV và ciphertext cộng thẻ xác thực được nối vào một blob nhị phân duy nhất và mã hóa Base64 để kết quả truyền an toàn qua các hệ thống mong đợi ASCII có thể in (email, JSON, query string). Cả ba thành phần đều cần thiết khi giải mã, đó là lý do chúng được đóng gói cùng nhau, công cụ trích xuất lại chúng khi bạn dán blob vào.
AES-256 có bị cấm ở đâu không?
Mật mã học đại chúng về cơ bản hợp pháp ở hầu hết mọi sản phẩm hướng đến người tiêu dùng trên toàn thế giới tính đến năm 2026. Cuộc chiến mật mã của Mỹ những năm 1990 kết thúc với Sắc lệnh hành pháp 13026 (1996) và việc nới lỏng thị trường đại chúng năm 2000. Các điểm đến bị cấm vận cụ thể (Iran, Triều Tiên, Syria, Cuba) và một số quốc gia có hạn chế nhập khẩu hoặc sử dụng riêng đối với mật mã học mạnh (bao gồm Trung Quốc, Nga, Việt Nam và Ả Rập Saudi) vẫn đáng kiểm tra theo luật địa phương nếu bạn sử dụng công cụ này ở những khu vực đó.
Có gì được gửi lên máy chủ không?
Không. Web Crypto API chạy gốc trong trình duyệt; crypto.subtle gọi vào cùng thư viện mật mã học mà trình duyệt sử dụng cho TLS (BoringSSL trên Chrome, NSS trên Firefox, CommonCrypto trên Safari). Không có gì rời khỏi thiết bị của bạn. Trang cũng yêu cầu HTTPS, được trình duyệt thực thi, Web Crypto chỉ có sẵn trong các ngữ cảnh an toàn để ngăn kẻ tấn công mạng hoán đổi JavaScript trước khi nó chạy.