Mã hóa mật khẩu Python
Mã hóa là quá trình dịch văn bản có thể đọc được thành các chuỗi byte vô nghĩa để chỉ người có khóa giải mã hoặc mã bí mật mới có thể đọc được. Quá trình này đóng một vai trò quan trọng trong việc bảo mật nội dung của bạn. Nó giúp mã hóa nội dung, xác minh nguồn gốc của tài liệu, chứng minh rằng nội dung không bị sửa đổi sau khi được gửi và đảm bảo rằng dữ liệu từ tài liệu được an toàn Show Bài viết này giải thích cách Aspose. Words cho phép bạn mã hóa tài liệu và cách kiểm tra xem tài liệu có mã hóa hay không Mã hóa bằng mật khẩuĐể mã hóa tài liệu, hãy sử dụng thuộc tính mật khẩu để cung cấp mật khẩu có chức năng như khóa mã hóa. Điều này sẽ sửa đổi nội dung tài liệu của bạn và làm cho nó không thể đọc được. Tài liệu được mã hóa sẽ yêu cầu nhập mật khẩu này trước khi có thể mở được Bạn có thể tìm thuộc tính mật khẩu thích hợp cho định dạng được yêu cầu. Mỗi định dạng lưu tài liệu trong aspose. từ. mô-đun lưu có một lớp tương ứng chứa các tùy chọn lưu cho định dạng này. Ví dụ: thuộc tính mật khẩu trong lớp DocSaveOptions cho DOC hoặc thuộc tính mật khẩu trong lớp OoxmlSaveOptions cho DOCX, DOCM, DOTX, DOTM và FlatOpc Lưu ý rằng chỉ một số định dạng tài liệu hỗ trợ mã hóa. Ví dụ: RTF không hỗ trợ mã hóa Bảng bên dưới liệt kê các định dạng và thuật toán mã hóa được Aspose hỗ trợ. Từ ngữ Định dạng Mã hóa được hỗ trợ trong khi tải Mã hóa được hỗ trợ trong khi lưu Mã hóa DOC, DOTXOR Mã hóa RC4 40-bitCryptoAPI Mã hóa RC4 Mã hóa RC4 (40-bit)DOCX, DOTX, DOCM, DOTM, FlatOPC, FlatOpcTemplate, FlatOpcMacroEnabled, FlatOpcTemplateMacroEnabledMã hóa tiêu chuẩn ECMA-376 Mã hóa nhanh nhẹn ECMA-376 Mã hóa tiêu chuẩn ECMA-376 (Ví dụ mã sau đây cho biết cách mã hóa tài liệu bằng mật khẩu
Kiểm tra xem tài liệu có được mã hóa khôngTrong một số trường hợp, bạn có thể có một tài liệu không thể đọc được và muốn đảm bảo rằng tài liệu đó được mã hóa và không bị hỏng hoặc nén Để phát hiện xem tài liệu có được mã hóa hay không và có yêu cầu mật khẩu hay không, bạn có thể sử dụng thuộc tính is_encrypted của lớp FileFormatInfo. Thuộc tính này cũng sẽ cho phép bạn thực hiện một số hành động trước khi tải tài liệu, chẳng hạn như thông báo cho người dùng cung cấp mật khẩu Ví dụ mã sau đây cho thấy cách phát hiện mã hóa tài liệu
Mở tài liệu có hoặc không có mật khẩuKhi chúng tôi chắc chắn rằng một tài liệu được mã hóa, chúng tôi có thể thử mở tài liệu này mà không cần mật khẩu, điều này sẽ dẫn đến một ngoại lệ Ví dụ mã sau đây cho biết cách thử mở tài liệu được mã hóa mà không cần mật khẩu
Sau khi chúng tôi thấy rằng không thể mở tài liệu được mã hóa nếu không có mật khẩu, chúng tôi có thể thử mở tài liệu đó bằng cách nhập mật khẩu Mô-đun này triển khai giao diện cho thủ tục crypt(3), là hàm băm một chiều dựa trên thuật toán DES đã sửa đổi; . Các cách sử dụng có thể bao gồm lưu trữ mật khẩu băm để bạn có thể kiểm tra mật khẩu mà không lưu trữ mật khẩu thực hoặc cố gắng bẻ khóa mật khẩu Unix bằng từ điển Lưu ý rằng hành vi của mô-đun này phụ thuộc vào việc triển khai thực tế quy trình crypt(3) trong hệ thống đang chạy. Do đó, bất kỳ tiện ích mở rộng nào có sẵn trong quá trình triển khai hiện tại cũng sẽ có sẵn trên mô-đun này Unix, không phải VxWorks không phải Emscripten, không phải WASI Mô-đun này không hoạt động hoặc không khả dụng trên nền tảng WebAssembly Phương pháp bămMới trong phiên bản 3. 3 Mô-đun xác định danh sách các phương thức băm (không phải tất cả các phương thức đều có sẵn trên tất cả các nền tảng) mật mã. METHOD_SHA512Phương thức Định dạng mật mã mô-đun với muối 16 ký tự và hàm băm 86 ký tự dựa trên hàm băm SHA-512. Đây là phương pháp mạnh nhất mật mã. METHOD_SHA256Một phương thức Định dạng mật mã mô-đun khác với muối 16 ký tự và hàm băm 43 ký tự dựa trên hàm băm SHA-256 Một phương thức Định dạng mật mã mô-đun khác với muối 22 ký tự và hàm băm 31 ký tự dựa trên mật mã Blowfish Mới trong phiên bản 3. 7 mật mã. METHOD_MD5Một phương thức Định dạng mật mã mô-đun khác với muối 8 ký tự và hàm băm 22 ký tự dựa trên hàm băm MD5 mật mã. METHOD_CRYPTPhương pháp truyền thống với muối 2 ký tự và hàm băm 13 ký tự. Đây là phương pháp yếu nhất Thuộc tính mô-đunMới trong phiên bản 3. 3 mật mã. phương phápDanh sách các thuật toán băm mật khẩu có sẵn, dưới dạng đối tượng Chức năng mô-đunMô-đun xác định các chức năng sau mật mã. crypt(word , salt=None)từ thường sẽ là mật khẩu của người dùng khi được nhập tại dấu nhắc hoặc trong giao diện đồ họa. Muối tùy chọn là một chuỗi như được trả về từ , một trong các giá trị Việc kiểm tra mật khẩu thường được thực hiện bằng cách chuyển mật khẩu văn bản thuần dưới dạng từ và kết quả đầy đủ của cuộc gọi trước, kết quả này phải giống với kết quả của cuộc gọi này muối (có thể là một chuỗi 2 hoặc 16 ký tự ngẫu nhiên, có thể có tiền tố là import crypt from hmac import compare_digest as compare_hash hashed = crypt.crypt(plaintext) if not compare_hash(hashed, crypt.crypt(plaintext, hashed)): raise ValueError("hashed version doesn't validate against original")4 để chỉ phương thức) sẽ được sử dụng để gây nhiễu thuật toán mã hóa. Các ký tự trong muối phải thuộc bộ import crypt from hmac import compare_digest as compare_hash hashed = crypt.crypt(plaintext) if not compare_hash(hashed, crypt.crypt(plaintext, hashed)): raise ValueError("hashed version doesn't validate against original")5, ngoại trừ Định dạng mật mã mô-đun có tiền tố là import crypt from hmac import compare_digest as compare_hash hashed = crypt.crypt(plaintext) if not compare_hash(hashed, crypt.crypt(plaintext, hashed)): raise ValueError("hashed version doesn't validate against original")4 Trả về mật khẩu đã băm dưới dạng một chuỗi, sẽ bao gồm các ký tự từ cùng một bảng chữ cái với muối Vì một số tiện ích mở rộng crypt(3) cho phép các giá trị khác nhau, với các kích thước khác nhau trong muối, nên sử dụng mật khẩu được mã hóa đầy đủ làm muối khi kiểm tra mật khẩu Đã thay đổi trong phiên bản 3. 3. Chấp nhận giá trị Trả về một loại muối được tạo ngẫu nhiên của phương pháp đã chỉ định. Nếu không có phương pháp nào được đưa ra, phương pháp mạnh nhất có sẵn trong được sử dụng Giá trị trả về là một chuỗi phù hợp để chuyển làm đối số muối cho round chỉ định số lượng round cho Mới trong phiên bản 3. 3 Đã thay đổi trong phiên bản 3. 7. Đã thêm tham số vòng. ví dụMột ví dụ đơn giản minh họa cách sử dụng thông thường (cần có thao tác so sánh thời gian không đổi để hạn chế tiếp xúc với các cuộc tấn công theo thời gian. thích hợp cho mục đích này) import pwd import crypt import getpass from hmac import compare_digest as compare_hash def login(): username = input('Python login: ') cryptedpasswd = pwd.getpwnam(username)[1] if cryptedpasswd: if cryptedpasswd == 'x' or cryptedpasswd == '*': raise ValueError('no support for shadow passwords') cleartext = getpass.getpass() return compare_hash(crypt.crypt(cleartext, cryptedpasswd), cryptedpasswd) else: return True Để tạo hàm băm của mật khẩu bằng phương pháp mạnh nhất hiện có và kiểm tra mật khẩu đó với bản gốc Làm cách nào để mã hóa tệp văn bản bằng mật khẩu trong Python?Mã hóa tệp bằng khóa được tạo . Mở tệp chứa khóa Khởi tạo đối tượng Fernet và lưu trữ nó trong biến fernet Đọc tập tin gốc Mã hóa tệp và lưu trữ tệp vào một đối tượng Sau đó ghi dữ liệu được mã hóa vào cùng một tệp nba. csv Thuật toán mã hóa nào tốt nhất cho mật khẩu Python?BCrypt là thuật toán băm mật khẩu, được thiết kế với tất cả các biện pháp phòng ngừa bảo mật mà chúng tôi đã đề cập trong đầu. Nó được sử dụng làm thuật toán băm mật khẩu mặc định trong OpenBSD, một hệ điều hành tập trung vào bảo mật nguồn mở và là thuật toán băm được hỗ trợ rộng rãi nhất cho đến nay. BCrypt được coi là khá an toàn. |