Hướng dẫn how do you password protect a text file in python? - làm cách nào để bạn có mật khẩu bảo vệ tệp văn bản trong python?

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    ZIP is an archive file format that supports lossless data compression. By lossless compression, we mean that the compression algorithm allows the original data to be perfectly reconstructed from the compressed data. So, a ZIP file is a single file containing one or more compressed files, offering an ideal way to make large files smaller and keep related files together.

    In this article, we will learn how to Create Password-Protected Zip of a file using Python. For this, we are using pyminizip module from python.

    Installation:

     The pyminizip module can be installed using the below command:

    pip install pyminizip

    For creating zip, we are using compress() method from pyminizip. So, we discuss first its syntax and arguments.

    Syntax:

    pyminizip.compress(“/srcfile/path.txt”, “file_path_prefix”, “/distfile/path.zip”, “password”, int(compress_level))

    Arguments:

    • src file path (string)
    • src file prefix path (string) or None (path to prepend to file)
    • dst file path (string)
    • password (string) or None (to create no-password zip)
    • compress_level(int) between 1 to 9, 1 (more fast) <—> 9 (more compress) or 0 (default)
       

    Return value: Always returns None

    Implementation:

    Input file:

    Hướng dẫn how do you password protect a text file in python? - làm cách nào để bạn có mật khẩu bảo vệ tệp văn bản trong python?

    Program:

    Python3

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    1
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    2

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    3
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    4
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    5

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    6
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    4
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    8

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    9
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    4
    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    1

    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    2
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    4
    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    4

    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    5
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    4
    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    7

    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    
    8
    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    8
    % python pyfilesec.py --help
    0

    % python pyfilesec.py --help
    1
    % python pyfilesec.py --help
    2

    Output:

    Hướng dẫn how do you password protect a text file in python? - làm cách nào để bạn có mật khẩu bảo vệ tệp văn bản trong python?

    Các công cụ quản lý toàn vẹn và quyền riêng tư theo định hướng tệp Pyfilesec (Beta) File-oriented privacy and integrity management tools (beta)


    Pyfilesec cung cấp một lớp Secfile nhằm mục đích giúp bảo vệ các tệp máy tính dễ dàng hơn khỏi kiểm tra thông thường hoặc tiết lộ tình cờ. Theo thiết kế, đảm bảo quyền riêng tư, dễ sử dụng và API đa nền tảng ổn định là các mục tiêu bảo mật quan trọng. Đảm bảo toàn vẹn là hữu ích nhưng không phải là ưu tiên hàng đầu. Tốc độ thực thi mã tương đối không quan trọng. Thông tin thực sự nhạy cảm cần được bảo vệ thông qua nhiều phương tiện, bao gồm các phương pháp về thủ tục, vật lý và pháp lý.SecFile that is intended to make it easier to protect computer files from casual inspection or accidental disclosure. By design, privacy assurance, ease-of-use, and a stable, cross-platform API are important security goals. Integrity assurance is useful but not a top priority. The speed of code execution is relatively unimportant. Truly sensitive information should be protected through multiple means, including procedural, physical, and legal methods.

    Pyfilesec ít hơn về mã hóa (nó thực hiện một cách khéo léo, cũng như nhiều gói tuyệt vời) và nhiều hơn về việc quản lý các vấn đề bảo mật ngay lập tức phát sinh khi làm việc với các tệp. Bất cứ ai thực hiện quản trị hệ thống trong phòng thí nghiệm nghiên cứu đều có thể thấy nó hữu ích (bao gồm cả người dùng nâng cao, không chỉ nhân viên CNTT), cũng như các nhà phát triển các chương trình trình bày phần mềm cho nghiên cứu đối tượng con người. Bất cứ ai cần quản lý tệp với các mục tiêu bảo mật tương thích có thể có khả năng được hưởng lợi.

    Từ góc độ bảo mật, mục tiêu là bảo vệ tốt hơn các tệp trong môi trường địa phương và giảm cơ hội tiết lộ tình cờ của họ. Nó nằm ngoài phạm vi Pyfilesec, để cố gắng bảo vệ chống lại tất cả các cuộc tấn công bất lợi có thể. Pyfilesec chỉ quan tâm đến các khía cạnh định hướng tệp của bảo mật thông tin.

    Ví dụ, trường hợp sử dụng: Một nhóm nghiên cứu có thể muốn thu thập dữ liệu về sử dụng thuốc bất hợp pháp (hoặc thông tin được bao phủ bởi HIPAA). Để giữ cho cửa sổ tiết lộ tình cờ càng nhỏ càng tốt, thông tin nhạy cảm như vậy được bảo vệ tốt nhất càng sớm càng tốt trong luồng dữ liệu - lý tưởng từ trong chương trình thu thập dữ liệu. Cũng mong muốn có thể mã hóa nó mà không cần phải giải mã trên cùng một máy tính và không cần lưu trữ mật khẩu để giải mã trong đó mật khẩu có thể được sao chép, tiết lộ hoặc tiếp xúc có thể làm cho mã hóa không liên quan). Có thể bảo mật (các) tệp gốc để tránh để lại thông tin nhạy cảm trên đĩa là hữu ích. Và đôi khi có thể mong muốn để che khuất kích thước tệp, ví dụ: để một tệp lớn hơn không thể chỉ ra một lịch sử sử dụng thuốc rộng lớn hơn. A research team might wish to collect data on illegal drug-use (or other HIPAA-covered information). To keep the window of accidental disclosure as small as possible, such sensitive information is best protected as early as possible in the data stream – ideally from within the data collection program. It is also desirable to be able to encrypt it without needing to be able to decrypt on the same computer, and without needing to store a password for decryption where the password might be copied, disclosed, or exposed to key-loggers (any of which could make encryption irrelevant). Being able to secure-delete the original file(s) to avoid leaving sensitive information on the disk is useful. And at times it can be desirable to obscure file sizes, e.g., so that a larger file cannot indicate a more extensive history of drug use.

    Mặc dù các công cụ tuyệt vời để mã hóa được có sẵn rộng rãi, bảo mật rất khó để đạt được. Ngay cả những người tốt và đáng tin cậy cũng có thể phạm sai lầm thỏa hiệp bảo mật. Các công cụ giúp quản lý bảo mật tệp có thể giảm cơ hội sai lầm và giúp mọi người tự tin và hiệu quả hơn.

    Pyfilesec được dự định đủ cho mục đích đảm bảo các tệp dữ liệu trong một phòng thí nghiệm nghiên cứu điển hình. Mặc dù vậy, bảo mật hiệu quả sẽ cao hơn nếu dữ liệu có giá trị kinh tế thấp (thường là trường hợp trong phòng thí nghiệm tâm lý học và khoa học thần kinh). Bảo mật hiệu quả sẽ cao hơn nhiều nếu phòng thí nghiệm có bảo mật vật lý và mạng hợp lý, chỉ có những người được đào tạo, đáng tin cậy làm việc ở đó (thường là trường hợp).

    Cảnh báo: Sử dụng mã hóa trong bối cảnh nghiên cứu đòi hỏi một số xem xét. Có lẽ điều quan trọng nhất cần ghi nhớ là, tùy thuộc vào hoàn cảnh của bạn, việc sử dụng mã hóa (hoặc các hình thức mã hóa cụ thể) có thể mâu thuẫn với các chính sách của sếp, tổ chức hoặc thậm chí chính phủ của bạn. Bạn có trách nhiệm biết tình huống của mình và về hậu quả của các quyết định của bạn về việc liệu và làm thế nào để sử dụng mã hóa. Ngoài ra, mã hóa chắc chắn đủ mạnh để gây rắc rối. Hãy xem xét một ví dụ: Mặc dù bạn có thể tự khóa xe hoặc nhà của mình, bạn cũng có thể thuê ai đó với đào tạo và công cụ để thay mặt bạn đột nhập. Tuy nhiên, với mã hóa, có thể sẽ rất tốn kém khi thuê một người nào đó để đột nhập thay mặt bạn; Hy vọng rằng điều đó là không thể, ngay cả đối với một kẻ thù được tài trợ tốt. Vì vậy, có thể mất dữ liệu bằng cách cố gắng bảo mật nó. Using encryption in a research context requires some consideration. Perhaps the most important thing to keep in mind is that, depending on your circumstances, the use of encryption (or particular forms of encryption) can conflict with policies of your boss, institution, or even government. You are responsible for knowing your situation, and for the consequences of your decisions about whether and how to use encryption. In addition, the encryption is definitely strong enough to cause trouble. Consider an example: Although you can lock yourself out of your own car or house, you could also hire someone with training and tools to break in on your behalf. With encryption, however, it would likely be prohibitively expensive to hire someone to “break in on your behalf”; hopefully that is not possible, even for a well-funded adversary. So it is possible to lose data by trying to secure it.

    Trạng thái phát triển: Trạng thái phát triển là beta, có nghĩa là API nhỏ thay đổi và lỗi là có thể. Sự nhấn mạnh phát triển hiện đang được tái cấu trúc mã cho Python 3. Tài liệu là một công việc đang được tiến hành. Một vài phần mở rộng được lên kế hoạch, đáng chú ý là các phụ trợ mã hóa thay thế (có khả năng hỗ trợ GPG) và sử dụng ZIP cho Lưu trữ. Quyền tệp trên Windows cần làm việc. The development status is beta, meaning that minor API changes and bugs are possible. The development emphasis is currently on refactoring the code for Python 3. Documentation is a work in progress. A few extensions are planned, notably alternative encryption backends (likely gpg support) and using zip for archives. File permissions on Windows needs work.

    Nhận xét, báo cáo lỗi hoặc sửa chữa và đóng góp mã được hoan nghênh. Phản hồi có thể được đăng trên GitHub (xem các vấn đề tại https://github.com/jeremygray/pyfilesec/). Liên hệ qua email riêng được ưa thích cho bất cứ điều gì nhạy cảm.

    Nguyên tắc và cách tiếp cận

    Sử dụng mã hóa khóa công khai (cụ thể là RSA) cho phép mật khẩu không bí mật (khóa công khai) được phân phối và sử dụng để mã hóa, không cần khóa riêng không chia sẻ được tham gia vào quá trình mã hóa. Điều này tách biệt một cách hợp lý mã hóa khỏi giải mã, từ đó cho phép sự phân tách vật lý của chúng. Khả năng tách biệt này mang lại sự linh hoạt đáng kể (và bảo mật). Ý tưởng là bất kỳ ai ở bất cứ đâu có thể mã hóa thông tin chỉ một quy trình đáng tin cậy (tức là, với quyền truy cập vào khóa riêng) đều có thể giải mã. Ví dụ, nhiều máy tính phòng thử nghiệm có thể có khóa công khai và sử dụng nó để mã hóa dữ liệu từ mỗi đối tượng để có thể chuyển sang máy tính chính để xác định, phân tích và lưu trữ. Khóa riêng (để giải mã) không cần phải được chia sẻ ngoài máy tính đáng tin cậy chính. Giữ nó riêng tư nhất có thể.

    Pyfilesec không, bản thân nó, không thực hiện mã mật mã; Bằng cách thiết kế, nó dựa vào việc triển khai bên ngoài. Cụ thể, các hoạt động mật mã sử dụng openSSL (xem openSSL.org), sử dụng việc triển khai RSA và AES. Những mật mã này là các tiêu chuẩn công nghiệp và có thể rất an toàn khi được sử dụng chính xác. Liên kết yếu hiệu quả gần như chắc chắn không phải là mật mã mà là cách xử lý khóa mã hóa, điều này phụ thuộc chủ yếu vào bạn (người dùng), bao gồm cả những gì xảy ra trong quá trình tạo khóa, lưu trữ và sao lưu chính. Nếu các khóa của bạn xấu hoặc bị tổn thương, cường độ mã hóa về cơ bản là không liên quan. Sức mạnh của khóa trên cửa trước của bạn là không liên quan nếu bạn tạo thói quen để lại chìa khóa theo người gác cửa.

    Một số cân nhắc:

    • Một bộ dụng cụ kiểm tra được bao gồm như một phần của thư viện.
    • OpenSSL không được phân phối như một phần của thư viện (xem Cài đặt).
    • Theo thiết kế, máy tính được sử dụng để mã hóa có thể khác với máy tính được sử dụng để giải mã; Nó có thể là một thiết bị, hệ điều hành và phiên bản khác nhau của OpenSSL. Khả năng không tương thích duy nhất là chữ ký (thu được từ sign ()) có thể không xác minh () nếu phiên bản openSSL được sử dụng quá khác nhau (nghĩa là, nếu một phiên bản trước 1.0 và phiên bản còn lại là 1.0 hoặc cao hơn).sign()) can fail to verify() if the version of OpenSSL used is too different (i.e., if one is pre version 1.0 and the other is 1.0 or higher).
    • Bạn chỉ nên mã hóa và giải mã trên các máy được an toàn về mặt vật lý, với quyền truy cập giới hạn cho những người đáng tin cậy. Mặc dù mã hóa có thể được thực hiện ở bất cứ đâu, sử dụng khóa công khai, nếu ai đó đã sử dụng khóa công khai khác để mã hóa dữ liệu dành cho bạn, bạn sẽ không thể truy cập dữ liệu của bạn.
    • Lý tưởng nhất, không di chuyển khóa riêng của bạn từ máy mà nó được tạo ra; Chắc chắn không bao giờ gửi email nó. Thông thường là tốt để chia sẻ khóa công khai, chắc chắn trong một nhóm nhỏ những người đáng tin cậy, chẳng hạn như một phòng thí nghiệm nghiên cứu. Nó càng được phân phối rộng rãi, nó càng sớm được nghỉ hưu (và mã hóa được xoay trên các tệp được mã hóa bằng khóa đó).
    • Một số lời khuyên tốt từ GNUPG: Nếu hệ thống của bạn cho phép các phân vùng hoán đổi được mã hóa, vui lòng sử dụng tính năng đó.

    Mục tiêu thiết kế:

    • Dựa vào các công cụ và thuật toán tiêu chuẩn, có sẵn và được hỗ trợ rộng rãi. OpenSSL và cách tiếp cận cơ bản (RSA + AES 256) được hiểu rõ và được khuyến nghị (ví dụ: bởi Kỹ thuật mật mã của Ferguson, Schneier, & Kohno (2010). Indianapolis, Indiana: Wiley).
    • Cho phép áp dụng tương đối dễ dàng của một bộ mật mã mã hóa khác, trong trường hợp thay đổi là cần thiết cho lý do mật mã.
    • Để rõ ràng, sử dụng và trả lại các đường dẫn đầy đủ cho các tệp, không phải đường dẫn tương đối.
    • Tránh obfuscation. Nó không tăng cường bảo mật, nhưng có thể làm cho việc phục hồi dữ liệu trở nên khó khăn hoặc tốn kém hơn. Vì vậy, tính minh bạch được ưa thích. Vì lý do này, meta-data được tạo ra theo mặc định để làm cho mọi thứ bớt tối nghĩa hơn; Meta dữ liệu có thể bị đàn áp nếu muốn.
    • Yêu cầu phiên bản OpenSSL là 0.9,8 trở lên.
    • Yêu cầu khóa công khai> = 1024 bit; Bạn chỉ nên sử dụng 2048 trở lên.
    • Đối với mã hóa AES, khóa phiên 256 bit ngẫu nhiên (mật khẩu AES) được tạo cho mỗi sự kiện mã hóa.
    • Sử dụng các định dạng tiêu chuẩn càng nhiều càng tốt.
    • Quản lý các khóa RSA tùy thuộc vào người dùng để làm.

    Cài đặt¶

    Pyfilesec¶

    Cài đặt mọi thứ theo cách thông thường cho gói Python:

    Phụ thuộc

    PyFileSec yêu cầu (nhưng không có gói chính nó) một bản sao của OpenSSL và một công cụ loại bỏ tệp an toàn. Cả hai thường có mặt trên Mac và Linux; Nếu vậy, cài đặt hoàn tất.

    Cũng có thể sử dụng phiên bản không mặc định (ví dụ: được biên dịch) của OpenSSL. Bạn có thể chỉ định đường dẫn với tùy chọn --OpenSslPath (sử dụng dòng lệnh) hoặc sử dụng pyfilesec.set_opensssl (đường dẫn) (python).--openssl path option (command-line use), or using pyfilesec.set_openssl(path) (python).

    Trên máy Mac, nếu bạn nhận được cùng một đầu ra đều tốt:, if you get the same output all is well:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm

    Trên Linux, nó thường rất giống nhau:, it is typically very similar:

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred

    Trên Windows, nó cũng miễn phí nhưng không dễ dàng., it is also free but not as easy.

    1. Tải xuống và cài đặt OpenSSL từ http://slproweb.com/products/win32opencessl.html. Đầu tiên cài đặt các bản phân phối lại Visual Visual C ++ 2008 (từ cùng một trang). Sau đó, cài đặt OpenSSL (ánh sáng là tốt) và chạy qua các trang cài đặt. Nó nên cài đặt vào C: \ OpenSSL-Win32 theo mặc định. Pyfilesec hiện có thể phát hiện và sử dụng openSSL.C:\OpenSSL-Win32 by default. pyFileSec should now be able to detect and use OpenSSL.

    2. Tải xuống và cài đặt SDELETE (miễn phí, từ Microsoft) http://technet.microsoft.com/en-us/sysiternals/bb897443.aspx. Pyfilesec có thể phát hiện sdelete.exe.sdelete (free, from Microsoft) http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx. pyFileSec should be able to detect sdelete.exe.

    Bạn có thể sẽ cần chạy các chương trình này một lần theo cách thủ công và chấp nhận các điều khoản trước khi có thể sử dụng chúng từ Pyfilesec.

    Bắt đầu¶

    Nói chung, bạn không cần các đặc quyền quản trị để làm việc với Pyfilesec sau khi nó được cài đặt. (Ngoại lệ duy nhất là, trên Windows, bạn cần phải là quản trị viên để kiểm tra xem các tệp có liên kết cứng khác với chúng không.)

    Việc sử dụng dòng lệnh có khả năng dễ dàng hơn với bí danh. Để tìm hiểu đường dẫn và cú pháp nào sẽ sử dụng trong bí danh, hãy bắt đầu Python tương tác (loại Python tại một thiết bị đầu cuối hoặc dấu nhắc lệnh) và sau đó:python at a terminal or command prompt) and then:

    >>> import pyfilesec as pfs
    >>> pfs.command_alias()
    

    Điều này sẽ in bí danh cho bash, csh / tcsh và dos. Sao chép và dán vào vỏ của bạn khi thích hợp (hoặc dán ở nơi khác, như a ~/.bash_profile).

    Một bản demo / thư mục nằm trong cùng thư mục với pyfilesec.py và có các ví dụ sử dụng cho kịch bản python py_example.py và cho scrip cropt dòng lệnh / shell sh_example.sh.py_example.py, and for command-line / shell scripting sh_example.sh.

    Hướng dẫn readme.txt có các hướng dẫn cơ bản về cách tạo cặp khóa RSA bằng Pyfilesec. Lý tưởng nhất, bất kỳ cặp khóa định dạng .PEM hợp lệ nào cũng sẽ hoạt động; Cho đến nay, điều này chỉ được thử nghiệm với các khóa được tạo bằng OpenSSL.readme.txt has basic instructions on how to generate an RSA key-pair using pyFileSec. Ideally, any valid .pem format key-pair should work; to date this has only been tested with keys generated using OpenSSL.

    Api¶

    API mô tả cách làm việc với một đối tượng Secfile từ bên trong Python. Sự hiểu biết về các tham số sẽ hữu ích cho việc sử dụng dòng lệnh / shell-script. Có thể lấy chi tiết về cú pháp dòng lệnh bằng cách sử dụng tùy chọn-Help thông thường:--help option:

    % python pyfilesec.py --help

    Ghi chú

    Bất kỳ tài liệu tham khảo nào về văn bản rõ ràng, hoặc văn bản đơn giản, chỉ có nghĩa là một tệp không được mã hóa. Nó có thể là một tệp nhị phân hoặc một tệp được mã hóa sẽ được mã hóa lần thứ hai. Không có yêu cầu rằng nó phải là văn bản.

    Lớp quan tâm chính là Secfile, được mô tả tiếp theo. Ba lớp khác được sử dụng nội bộ, và vì vậy cũng được mô tả ở đây để hoàn thiện. Không cần phải hiểu bất cứ điều gì ngoại trừ một Secfile để sử dụng nó.

    lớp secfile () ¶

    lớp pyfilesec.secfile (infile = none, pub = none

    Lớp để làm việc với một tệp như một đối tượng an toàn hơn.

    Một thể hiện Secfile theo dõi một tệp cụ thể và coi nó là đối tượng cùng một đối tượng mặc dù có sự khác biệt đối với tệp cơ bản trên hệ thống tệp đĩa (ví dụ: được mã hóa).

    Thí dụ

    Một đối tượng Secfile được tạo để theo dõi một tệp (ở đây tệp được đặt tên là Larch.txt, có một khoảng trống trong đó). Thông thường, tên tệp được đưa ra khi khởi tạo, nhưng nó cũng có thể được đưa ra sau:

    >>> sf = SecFile('The Larch.txt')
    >>> sf.file
    '/Users/.../data/The Larch.txt'
    

    Tệp hiện có thể được mã hóa bằng khóa công khai (được lưu trữ trong tệp có tên Pub.pem):pub.pem):

    >>> sf.encrypt('pub.pem')
    >>> sf.file
    '/Users/.../data/The Larch.enc'
    

    Ví dụ Secfile vẫn giữ nguyên, nhưng tệp cơ bản đã được đổi tên với phần mở rộng .enC. Các tập tin ban đầu đã bị xóa an toàn..enc. The original file has securely deleted.

    Các đối tượng Secfile có các thuộc tính khác nhau có thể được truy vấn (tiếp tục từ ví dụ trên):

    >>> sf.is_encrypted
    True
    >>> sf.basename
    'The Larch.enc'
    >>> sf.snippet
    '(encrypted)'
    

    Giải mã được thực hiện theo cách tương tự, sử dụng khóa riêng (ở đây, như được đọc từ một tệp có tên Priv.pem):priv.pem):

    >>> sf.decrypt('priv.pem', 'pphr.txt')
    >>> sf.basename
    'The Larch.txt'
    

    Lưu ý rằng tệp gốc của tệp gốc được khôi phục; Con đường đầy đủ thì không.

    Mã hóa (pub = none, meta = true, date = true, netch

    Mã hóa một tệp bằng khóa công khai.

    Theo mặc định, bản rõ ban đầu được xử lý an toàn sau khi mã hóa (mặc định giữ = false). Đây là thời gian tốn thời gian, nhưng quan trọng.keep=False). This is time-consuming, but important.

    Ý tưởng là bạn có thể có và chia sẻ một khóa công khai, mà bất kỳ ai cũng có thể sử dụng để mã hóa những thứ mà chỉ bạn mới có thể giải mã. Tạo các khóa tốt và quản lý chúng là không tầm thường (xem Genrsa () và tài liệu).genrsa() and documentation).

    Các tệp lớn hơn 8G trước khi mã hóa sẽ gây ra lỗi.

    Để che dấu các kích thước tệp nhỏ, pad () chúng theo kích thước tối thiểu mong muốn trước khi gọi mã hóa ().pad() them to a desired minimum size before calling encrypt().

    Thông số :pub::

    Khóa công khai để sử dụng, được chỉ định là đường dẫn đến tệp .pem. Độ dài khóa được đề xuất tối thiểu là 2048 bit; 1024 được cho phép nhưng nản lòng mạnh mẽ..pem file. The minimum recommended key length is 2048 bits; 1024 is allowed but strongly discouraged.

    meta::

    Nếu đúng hoặc một dict, bao gồm dữ liệu meta (bản rõ) trong kho lưu trữ. Nếu được đưa ra một dict, Dict sẽ được cập nhật với dữ liệu meta mới. Điều này cho phép tất cả các dữ liệu meta được giữ lại từ mã hóa ban đầu thông qua nhiều vòng quay mã hóa. Nếu sai, sẽ chỉ ra rằng dữ liệu meta đã bị triệt tiêu.True or a dict, include the meta-data (plaintext) in the archive. If given a dict, the dict will be updated with new meta-data. This allows all meta-data to be retained from the initial encryption through multiple rotations of encryption. If False, will indicate that the meta-data were suppressed.

    Xem load_metadata () và log_metadata ().load_metadata() and log_metadata().

    date::

    Đúng: Lưu ngày trong dữ liệu meta rõ ràng. Sai: Ứng dụng ngày không được lưu trong dữ liệu meta. : save the date in the clear-text meta-data. False : suppress date from being saved in the meta-data.

    Ghi chú

    Các dấu thời gian tệp trên hệ thống tệp cơ bản không bị che khuất, ngay cả khi date = false.date=False.

    keep::

    FALSE = Xóa tệp gốc (không được mã hóa) True = Rời khỏi tệp gốc = remove original (unencrypted) file True = leave original file

    enc_method::

    Tên của hàm / phương thức để sử dụng (hiện chỉ có một tùy chọn, mặc định)

    hmac_key::

    Khóa tùy chọn để sử dụng để xác thực tin nhắn (HMAC-SHA256, sau khi nhập); Nếu một khóa được cung cấp, HMAC sẽ được tạo và lưu trữ bằng dữ liệu meta. .sign().

    Ghi chú : :

    Cho phép một chuỗi ngắn, một dòng được đưa vào dữ liệu meta. được cắt để đảm bảo rằng <120 ký tự của nó (chủ yếu để văn bản của khóa riêng không thể được nhúng trong dữ liệu meta, không được mã hóa).

    giải mã (privan = none, pphr = none, keep_meta = false, keep_enc = false, dec_method = none) ¶

    Giải mã một tệp được mã hóa bằng mã hóa ().encrypt().

    Để lấy lại dữ liệu, cần hai tệp: data.enc và privateKey.pem. Nếu khóa riêng có cụm mật khẩu, bạn cũng sẽ cần cung cấp điều đó. PPHR có thể là bản cụm mật khẩu (một chuỗi) hoặc tên tệp. Chúng phải phù hợp với khóa công khai được sử dụng để mã hóa.data.enc and privkey.pem. If the private key has a passphrase, you’ll need to provide that too. pphr can be the passphrase itself (a string), or a file name. These must match the public key used for encryption.

    Hoạt động trên một bản sao của Data.enC, cố gắng giải mã nó. Dữ liệu gốc.enC được xóa (trừ khi keep_enc = true).data.enc, tries to decrypt it. The original data.enc is removed (unless keep_enc=True).

    Cố gắng phát hiện liệu tệp được giải mã có kết thúc bên trong thư mục Dropbox hay không; Nếu vậy, từ chối tiến hành.

    Thông số :Priv:

    Đường dẫn đến khóa riêng được kết hợp với khóa Pub được sử dụng tại mã hóa; trong định dạng .pempub key used at encryption; in .pem format

    PPHR:

    Cụm mật khẩu cho khóa riêng (dưới dạng chuỗi hoặc tên tệp)

    keep_meta:

    Nếu sai, hãy hủy liên kết tệp meta sau khi giải mã

    keep_enc:

    Nếu sai, hãy hủy liên kết tệp được mã hóa sau khi giải mã

    DEC_METHOD: (chưa được thực hiện, chỉ có một lựa chọn).: (not implemented yet, only one choice).

    Tên của một phương thức giải mã đã được đăng ký trong codec hiện tại (xem pfscodecregistry). Không ai sẽ cố gắng sử dụng thông tin trong tệp dữ liệu meta của tệp và sẽ rơi vào phương thức mặc định.codec (see PFSCodecRegistry). None will try to use information in the file’s meta-data, and will fall through to the default method.

    xoay (pub = none, privan = none, pphr = none, hmac_key = none, pad = none) ¶

    Trao đổi mã hóa cũ cho Mới: Deprypt-Then-Re-Encrypt.

    Về mặt khái niệm, có ba bước riêng biệt: giải mã với Priv (đây là khóa riêng tư cũ của Cameron), đăng ký lại (với khóa công khai mới của Hồi giáo), xác nhận rằng vòng quay đã hoạt động và phá hủy tệp cũ (không an toàn). xoay () sẽ chỉ thực hiện hai trong số này.priv (this is the “old” private key), re-encrypt (with the “new” public key), confirm that the rotation worked, and destroy the old (insecure) file. rotate() will only do the first two of these.

    Nếu PAD được đưa ra, phần đệm sẽ được cập nhật lên độ dài mới trước khi được mã hóa lại.pad is given, the padding will be updated to the new length prior to re-encryption.

    Meta dữ liệu mới được thêm vào cùng với dữ liệu meta ban đầu. ROTATE () sẽ bảo tồn dữ liệu meta trong các phiên mã hóa, nếu có, thêm vào đó thay vì lưu chỉ phần cuối cùng. . nếu không thì sf.decrypt (cũ) .Encrypt (mới) sẽ đủ.rotate() will preserve meta-data across encryption sessions, if available, adding to it rather than saving just the last one. (keep_meta=False will suppress all meta_data; typically rotation events are not sensitive.) Handling the meta-data is the principle motivation for having a rotate method; otherwise sf.decrypt(old).encrypt(new) would suffice.

    Thông số :Priv:

    Đường dẫn đến khóa riêng được kết hợp với khóa Pub được sử dụng tại mã hóa; trong định dạng .pempub key that was used for the existing encryption

    PPHR:

    Cụm mật khẩu cho khóa riêng (dưới dạng chuỗi hoặc tên tệp)

    keep_meta:

    Nếu sai, hãy hủy liên kết tệp meta sau khi giải mã

    keep_enc:

    Nếu sai, hãy hủy liên kết tệp được mã hóa sau khi giải mã

    DEC_METHOD: (chưa được thực hiện, chỉ có một lựa chọn).

    Tên của một phương thức giải mã đã được đăng ký trong codec hiện tại (xem pfscodecregistry). Không ai sẽ cố gắng sử dụng thông tin trong tệp dữ liệu meta của tệp và sẽ rơi vào phương thức mặc định.

    xoay (pub = none, privan = none, pphr = none, hmac_key = none, pad = none) ¶out).

    Trao đổi mã hóa cũ cho Mới: Deprypt-Then-Re-Encrypt.

    Về mặt khái niệm, có ba bước riêng biệt: giải mã với Priv (đây là khóa riêng tư cũ của Cameron), đăng ký lại (với khóa công khai mới của Hồi giáo), xác nhận rằng vòng quay đã hoạt động và phá hủy tệp cũ (không an toàn). xoay () sẽ chỉ thực hiện hai trong số này.filename using pubkey pub.

    Nếu PAD được đưa ra, phần đệm sẽ được cập nhật lên độ dài mới trước khi được mã hóa lại. should be a base64-encoded signature, or a path to a sig file.

    Meta dữ liệu mới được thêm vào cùng với dữ liệu meta ban đầu. ROTATE () sẽ bảo tồn dữ liệu meta trong các phiên mã hóa, nếu có, thêm vào đó thay vì lưu chỉ phần cuối cùng. . nếu không thì sf.decrypt (cũ) .Encrypt (mới) sẽ đủ.

    Đường dẫn đến khóa riêng cũ được kết hợp với khóa quán rượu được sử dụng cho mã hóa hiện có

    quán rượu:

    Mac:     srm -f -z --medium  filename
    Linux:   shred -f -u -n 7 filename
    Windows: sdelete.exe -q -p 7 filename

    Đường dẫn đến khóa công khai mới sẽ được sử dụng cho mã hóa mới.

    hmac_key:

    khóa (chuỗi) để sử dụng cho một HMAC được lưu trong dữ liệu meta

    ký hiệu (privan = none, pphr = none, out = none) ¶ may fail to remove all traces of a file if multiple hard-links exist for the file. For this reason, the original link count is returned. In the case of multiple hardlinks, Linux (shred) and Windows (sdelete) do appear to destroy the data (the inode), whereas Mac (srm) does not.

    Ký một tệp nhất định có khóa riêng.destroy() succeeds, the SecFile object is reset(). The .result attribute contains the details. If destroy() fails, .result is not reset.

    Nhận tiêu hóa của tệp, ký tên vào Digest, trả về chữ ký được mã hóa cơ sở64 (hoặc lưu nó trong tệp).

    Xác minh (pub = none, sig = none) ¶filename until it has length size.

    Xác minh chữ ký của tên tệp bằng PubKey Pub.pad only changes the effective length, and the padding is easy to see (unless the padding is encrypted).

    Các tập tin ngắn hơn kích thước sẽ được đệm ra kích thước (xem chi tiết bên dưới). Kích thước tệp kết quả tối thiểu là 128 byte. Các tệp đã được đệm trước tiên sẽ có bất kỳ phần đệm nào được xóa, và sau đó được đệm ra kích thước mục tiêu mới.

    Các tệp được đệm bao gồm một vài byte cho các thẻ Descriptor đệm, không chỉ null byte. Do đó, các tập tin gần với kích thước đã không bị che khuất kích thước và cũng được đánh dấu là được đệm (trong số ~ 36 byte cuối cùng), nâng một paddingerror. Để tránh điều này, bạn có thể kiểm tra bằng hàm tiện lợi _OK_TO_PAD () trước khi gọi pad ().size already would not have their sizes obscured AND also be marked as being padded (in the last ~36 bytes), raising a PaddingError. To avoid this, you can check using the convenience function _ok_to_pad() before calling pad().

    Định dạng đệm nội bộ:

    file+nbytes+paddingdescriptors+finalbyte + n bytes + padding descriptors + final byte

    Các mô tả đệm bao gồm 10 chữ số+OneByte+PFS_PAD, trong đó byte là bv (byte null). Quá trình không phụ thuộc vào giá trị của byte. 10 chữ số cho chiều dài của phần đệm dưới dạng một số nguyên, tính bằng byte. n được chọn để làm cho kích thước tệp mới bằng kích thước được yêu cầu.10-digits + one byte + PFS_PAD, where byte is b’’ (the null byte). The process does not depend on the value of the byte. The 10 digits gives the length of the padding as an integer, in bytes. n is selected to make the new file size equal the requested size.

    Để làm cho việc không làm cho dễ dàng hơn và mạnh mẽ hơn (và cho phép kiểm tra con người), các byte cuối cung cấp số lượng byte đệm đã được thêm vào, cộng với một định danh. 10 chữ số không được mã hóa cứng là 10, nhưng là độ dài của str (max_file_size), trong đó hằng số max_file_size là 8G theo mặc định. Điều này có nghĩa là bất kỳ thay đổi nào đối với hằng số kích thước tệp tối đa có thể gây ra lỗi PAD / Unpad trên các phiên bản.str(max_file_size), where the max_file_size constant is 8G by default. This means that any changes to the max file size constant can thus cause pad / unpad failures across versions.

    Giá trị kích thước đặc biệt:size values:

    0: Unpad = Xóa bất kỳ phần đệm hiện có, không có lỗi nếu không có

    -1: nghiêm ngặt unpad = loại bỏ đệm nếu có, lỗi nếu không có mặt

    unpad () ¶

    Xóa đệm PFS khỏi tập tin. Nâng cao paddingerror nếu không có pad.PaddingError if no pad.

    Cắt ngắn tệp để xóa đệm; Không phá hủy phần đệm.

    Các phương pháp Secfile có sẵn khác bao gồm:

    set_file (): Thay đổi tệp để hoạt động và đặt thuộc tính .file. : change the file to work with, and set the .file property.

    Đổi tên (new_name): Thay đổi tên của tệp hiện có trên hệ thống tệp. : changes the name of the existing file on the file system.

    Đọc (n): Đọc n dòng từ tệp, trả về dưới dạng một chuỗi. : read n lines from the file, return as a single string.

    Các đối tượng Secfile có các thuộc tính có thể được truy cập với ký hiệu dấu chấm thông thường (nghĩa là, như sf.property trong đó sf là đối tượng Secfile). Hầu hết không thể được đặt (ngoại lệ được ghi nhận).sf.property where sf is a SecFile object). Most cannot be set (exceptions noted).

    Tệp: Đường dẫn đầy đủ đến tệp bên dưới trên hệ thống tệp : the full path to the underlying file on the file system

    Basename: Tương tự như OS.Path.Basename (sf.File) hoặc không có nếu không có tệp. : same as os.path.basename(sf.file), or None if no file.

    Kích thước: (dài int) kích thước tính bằng byte trên đĩa theo báo cáo của os.path.getSize (sf.file) .metadata: (dict) return {} cho một tệp không được mã hóa.metadataf: (chuỗi) Phiên bản thân thiện với con người của siêu dữ liệu , ví dụ: cho các tệp nhật ký. Trả về ‘{}, cho một tệp không được mã hóa.snippet: (chuỗi) tối đa 60 ký tự của dòng đầu tiên của tệp; hoặc sẽ trả về ‘(được mã hóa), hoặc không có nếu không có fileis_encrypted: (boolean) true nếu được mã hóa bởi pyfilesec.secfile.encrypt (); không phát hiện bất kỳ sự gia hạn nào trong tổng hợp.is_in_dropbox: và Mercurial (HG) được phát hiện.Permissions: Quyền tệp kiểu POSIX (int; -1 trên Windows) : (long int)size in bytes on the disk as reported by os.path.getsize(sf.file).metadata : (dict)returns {} for an unencrypted file.metadataf : (string)human-friendly version of metadata, e.g., for log files. returns ‘{}’ for an unencrypted file.snippet : (string)up to 60 characters of the first line of the file; or will return ‘(encrypted)’, or None if no fileis_encrypted : (boolean)True if encrypted by pyFileSec.SecFile.encrypt(); does not detect any-encryption-in-general.is_in_dropbox : (boolean)True if inside the user’s Dropbox folderis_in_writeable_dir : (boolean)True if the user has write permission to the file’s directoryis_tracked : by version control (boolean)only git, svn, and mercurial (hg) are detected.permissions : POSIX-style file permissions (int; -1 on Windows)

    Nếu sf.permissions là 384 (int), thì OCT (sf.permissions) sẽ là ‘0600.sf.permissions is 384 (int), then oct(sf.permissions) will be ‘0600’.

    openssl:path : path

    Chứa đường dẫn đến tệp thực thi OpenSSL để sử dụng.

    OpenSSL_Version: (Chuỗi) Phiên bản của sf.openssl.hardlinks: Đếm tất cả các liên kết cứng vào tệp (int) Số lượng bao gồm sf.file là một liên kết. Yêu cầu các đặc quyền quản trị viên trên Windows. : (string)version of sf.openssl.hardlinks : count of all hardlinks to the file (int)the count includes sf.file as one link. requires Admin privileges on Windows.

    Lớp secfilearchive¶

    Một đối tượng SecFileSarch quản lý phiên bản mã hóa (.ENC) của tệp. Cụ thể, một tập tin được mã hóa là có ba mảnh:.enc) version of the file. In particular, an encrypted “file” has three pieces:

    • Một phiên bản được mã hóa của tệp plain_text (hiện được mã hóa bằng AES-256-CBC)
    • Phiên bản được mã hóa của mật khẩu AES (đôi khi được gọi là khóa phiên) như được mã hóa bằng khóa công khai RSA
    • Một tệp chứa dữ liệu meta về sự kiện mã hóa (hoặc một trình giữ chỗ nói rằng dữ liệu meta đã bị triệt tiêu)

    Một Secfilearchive chăm sóc việc đóng gói và giải nén ba mảnh vào một tệp bên dưới duy nhất trên hệ thống tệp. Hiện tại đây là một tệp .tar.gz thông thường:.tar.gz file:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    0

    Meta-data (file.meta) luôn luôn rõ ràng. Điều này là để tạo điều kiện cho việc kiểm tra con người trong việc sử dụng lưu trữ.file.meta) is always clear-text. This is to facilitate human inspection in archival uses.

    lớp pyfilesec.secfilearchive (name = '', files = none, arc = none, netch = true)

    Lớp để làm việc với tệp lưu trữ CIPHER_TEXT (= *.ENC).

    Được sử dụng minh bạch bởi Secfile khi cần thiết; Thông thường, không cần phải làm việc trực tiếp với SecFilearchive.

    • Cung cấp một tên để tạo một kho lưu trữ trống hoặc suy ra một tên từ các đường dẫn trong

      Các tập tin, hoặc từ tên cung lưu trữ., or from archive arc name.

    • Cung cấp các tập tin cũng sẽ đóng gói () chúng vào kho lưu trữ.pack() them into the archive.

    • Cung cấp một vòng cung lưu trữ hiện có cũng sẽ giải nén nó vào TMParc will also unpack it into a tmp

      Thư mục và trả lại các đường dẫn đầy đủ về tên tệp. (Điều này có thể dẫn đến các tệp TMP đi lạc nếu chúng không bị người dùng xóa, nhưng mọi thứ nhạy cảm đều được mã hóa.)

    get_dec_method (codec) ¶

    Trả về một phương thức giải mã hợp lệ từ meta-data hoặc mặc định.

    Xử lý chéo yêu cầu DEC_METHOD chống lại Meta-Data.

    Gói (tệp, giữ = true) ¶

    Tạo một tệp TGZ từ danh sách các đường dẫn, đặt quyền.

    Cuối cùng có thể có một ARG để quyết định nên sử dụng TAR hay ZIP. Chỉ cần một trình bao bọc Tarfile với phần mở rộng, quyền, tùy chọn hủy liên kết. Không liên kết là liệu có liên kết các tệp gốc hay không sau khi thực hiện kho lưu trữ Cipher_text chứ không phải tùy chọn bảo mật.

    giải nén () ¶

    Trích xuất các tệp từ kho lưu trữ CIPHER_TEXT, trả lại đường dẫn về các tệp.

    Các tệp được giải nén vào thư mục TMP; Gói gọi quy trình () nên cẩn thận để làm sạch các tệp đó một cách thích hợp. Không có thông tin nhạy cảm được tiết lộ bằng cách giải nén các tập tin.pack() should take care to clean up those files appropriately. There is no sensitive information revealed by unpacking files.

    Thông số :giữ cho : :

    Sai sẽ hủy liên kết tệp data_enc sau khi giải nén, nhưng chỉ khi không có lỗi trong khi giải nén will unlink the data_enc file after unpacking, but only if there were no errors during unpacking

    Lớp Rsakeys¶

    lớp pyfilesec.rsakeys (pub = none, privan = none, pphr = none) ¶

    Lớp để quản lý và kiểm tra các cặp khóa RSA.

    CẬP NHẬT (Pub = none, Priv = none, pphr = none, req = 0) ¶

    Chấp nhận giá trị mới, sử dụng Val hiện tại nếu không có cái mới hoặc thất bại.

    Yêu cầu (REQ)

    Tăng lỗi nếu REQ yêu cầu chính không được đáp ứng; khẳng định giống như.req are not met; assert-like.

    Được sử dụng bởi các phương thức Secfile: rsakeys.Require (req = neure_pubk | neure_priv) đọc dưới dạng assertrsakeys.pubandrsakeys.priv hoặc đưa ra lỗi phù hợp, bao gồm cả cụm mật khẩu bị thiếu nếu khóa riêng được mã hóa.rsakeys.require(req=NEED_PUBK | NEED_PRIV) reads as assert rsakeys.pub and rsakeys.priv or raise a tailored error, including a missing passphrase if the private key is encrypted.

    Sniff (Key) ¶

    Kiểm tra khóa tệp, trả về thông tin.key, returns information.

    Ví dụ về giá trị trả về:

    ('Pub', 2048) = Khóa công khai có độ dài (mô đun RSA) 2048) = public key with length (RSA modulus) 2048 bits

    ('Priv', true) True) = encrypted private key (will require apassphrase to use)

    (Không, không có) = không phải là định dạng khóa có thể phát hiện được None) = not a detectable key format

    kiểm tra()¶

    Kiểm tra xem cặp khóa có phù hợp để sử dụng với Pyfilesec hay không.

    Các phím nên được kiểm tra trong các cặp phù hợp. Bao gồm một bài kiểm tra thực tế về mã hóa-decrypt-decrypt bằng cách sử dụng các khóa với codec mặc định.

    Một đối tượng RSAKEYS có ba thuộc tính:RsaKeys object has three properties:

    Pub: Pathcontains Đường dẫn đến tệp khóa công khai.PRIV: Pathcontains Đường dẫn đến tệp khóa riêng.PPHR: (Chuỗi) chứa cụm mật khẩu thực tế. Nếu cụm mật khẩu được đưa ra ban đầu dưới dạng đường dẫn, nó được đọc từ tệp. : pathcontains the path to the public key file.priv : pathcontains the path to the private key file.pphr : (string)contains the actual passphrase. If the passphrase was given initially as a path, it is read from the file.

    Lớp thể loại

    Lớp này có thể được sử dụng để tạo các cặp khóa phù hợp để sử dụng với Pyfilesec.

    lớp pyfilesec.genrsa¶

    Một lớp học để tạo các cặp khóa RSA

    hộp thoại (tương tác = true, args = none) ¶

    Hộp thoại dòng lệnh để tạo một cặp khóa RSA, định dạng PEM.

    Để khởi chạy từ dòng lệnh:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    1

    Sau đây sẽ làm điều tương tự, nhưng lưu cụm mật khẩu vào một tệp có tên ‘pphr, hoặc lưu vào bảng tạm]:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    2

    Và nó có thể được thực hiện từ Shell phiên dịch Python:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    3

    Cụm mật khẩu sẽ không được in nếu nó được nhập thủ công. Nếu nó được tạo tự động, nó sẽ được hiển thị hoặc lưu vào một tệp nếu tùy chọn--passfile được cung cấp hoặc được lưu vào bảng tạm nếu tùy chọn --board được đưa ra. Đây là bản sao duy nhất của cụm mật khẩu; Các cặp chính là vô dụng nếu không có nó. Trên thực tế, nó tồi tệ hơn nhiều so với vô dụng. Nó nguy hiểm: bạn vẫn có thể mã hóa một thứ mà bạn không thể giải mã được.--passfile is given, or saved to the clipboard if option --clipboard is given. This is the only copy of the passphrase; the key-pair is useless without it. Actually, its far worse than useless. Its dangerous: you could still encrypt something that you could not decrypt.

    Chọn từ 2048, 4096 hoặc 8192 bit. 1024 không an toàn trung hạn và 16384 bit là không cần thiết (cũng không phải là 8192). Một cụm mật khẩu là bắt buộc, hoặc một sẽ được tạo tự động. Lý tưởng nhất là tạo một cụm mật khẩu mạnh trong trình quản lý mật khẩu (ví dụ: keepassx), lưu ở đó, dán nó vào hộp thoại.

    Bạn có thể muốn tạo các khóa cho mục đích thử nghiệm và sau đó tạo các khóa khác nhau để sử dụng thực tế.

    Cơ quan đăng ký Codec lớp

    Hiện tại chỉ có một lựa chọn cho một codec.

    lớp pyfilesec.pfscodecregistry (mặc định = {}, test_keys = none) ¶

    Lớp để quản lý rõ ràng các hàm mã hóa và giải mã (= codec).

    Một pfscodecregistry được sử dụng để trả về các hàm mã hóa và giải mã thực tế để sử dụng khi một đối tượng SecFile gọi các phương thức .encrypt () hoặc .decrypt () của nó. Các chức năng được hiệu chỉnh để phù hợp với định dạng dự kiến ​​tối thiểu và có thể tùy ý được yêu cầu để vượt qua bản thân mã hóa bản thân mã hóa trước khi được đăng ký (và do đó có sẵn cho Secfile để sử dụng)..encrypt() or .decrypt() methods. The functions are vetted to conform to a minimal expected format, and can optionally be required to pass an encrypt-then-decrypt self-test before being registered (and hence available to a SecFile to use).

    Thông thường, không cần bất cứ điều gì khác ngoài sổ đăng ký mặc định được thiết lập tự động. Mỗi trường hợp của một Secfile giữ bản sao của cơ quan đăng ký. Một phần, có một sổ đăng ký là giúp đảm bảo tính ổn định API dài hạn ngay cả trong trường hợp cần phải thay đổi giao thức mật mã cơ bản là bắt buộc. Cũng mong muốn có thể hỗ trợ một chế độ chỉ đọc của người Viking, tức là, để truy cập và sử dụng tất cả các phương thức giải mã, đồng thời ngăn chặn mã hóa với cùng một codec đó.SecFile keeps its own copy of the registry. In part, having a registry is to help ensure longer-term API stability even in the event that a change in underlying cryptographic protocol is necessitated. It is also desirable to be able to support a “read only” mode, i.e., to access and use all decryption methods, while preventing encryption with that same codec.

    Các kiểm tra được thiết kế để bảo vệ chống lại sự mơ hồ lưu trữ và lỗi của nhà điều hành, và không chống lại sự thao túng bất lợi của sổ đăng ký.

    Để đăng ký một chức năng mới, ý tưởng là có thể làm:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    4

    Đăng ký (new_fifts, test_keys = none) ¶

    Xác thực và thêm một chức năng CODEC mới vào sổ đăng ký.

    Thông thường, người ta đăng ký mã hóa và giải mã các hàm theo cặp. Chỉ có thể đăng ký một chức năng giải mã, để hỗ trợ chỉ đọc (giải mã) sử dụng codec.

    Nếu test_keys được cung cấp, một xác nhận tự kiểm tra tự kiểm tra mã hóa phải được đăng ký trước khi đăng ký có thể tiến hành. test_keys phải là một bộ (enc_kwargs, dec_kwargs) sẽ được chuyển cho các chức năng tương ứng được đăng ký.test_keys is provided, an encrypt-decrypt self-test validation must passbefore registration can proceed. test_keys should be a tuple of (enc_kwargs, dec_kwargs) that will be passed to the respective functions being registered.

    unpistister (function_list) ¶

    Xóa các cặp codec khỏi sổ đăng ký dựa trên các khóa.

    is_registered (fxn_name) ¶

    Trả về true nếu fxn_name được đăng ký; Xác thực khi đăng ký.

    get_function (fxn_name) ¶

    Trả về một chức năng được xác thực dựa trên khóa đăng ký của nó fxn_name.fxn_name.

    Các bài kiểm tra và hiệu suất

    Các thử nghiệm tích hợp có thể được chạy từ dòng lệnh:

    hoặc từ trong thư mục chính chỉ:

    Để xem thông báo nhật ký và GC-Debug trong các bài kiểm tra:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    5

    Nếu bạn thử tùy chọn ‘Debug, hãy lưu ý rằng một số thử nghiệm được thiết kế để kiểm tra các tình huống lỗi; tức là, những gì đang được thử nghiệm là các tình huống nên thất bại, thất bại và được công nhận là tình huống thất bại. Điều này có nghĩa là trong đầu ra dài dòng, bạn sẽ thấy một số thứ trông giống hệt các thông báo lỗi (ví dụ: lỗi hoạt động của RS RSA) vì chúng được ghi lại.

    Để biết chi tiết về các bài kiểm tra cụ thể, tham khảo mã trực tiếp.

    Màn biểu diễn¶

    Các tệp được mã hóa trên một máy có thể được giải mã trên một nền tảng khác. (Tuy nhiên, chưa được thử nghiệm với các máy được biết là có các endian khác nhau, tuy nhiên.)

    Với một ngoại lệ, phiên bản cụ thể của OpenSSL không quan trọng. Ngoại lệ đã biết là có sự không tương thích giữa v0.9.x và v1.0.x khi sử dụng dấu hiệu / xác minh. Được thử nghiệm với 9 phiên bản OpenSSL, chạy trên Mac OS X (10.8), 3 phân phối Linux và Windows 7:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    6

    Mã hóa về cơ bản là tuyến tính theo thời gian và không gian đĩa (kích thước tệp; thời gian sẽ thay đổi theo CPU, tốc độ đĩa, v.v.). Các giá trị ví dụ từ máy tính xách tay:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    7

    Nếu phần mềm sao lưu đang chạy, điều đó có thể làm giảm đáng kể tốc độ rõ ràng của đối tượng Secfile. Có lẽ, việc sử dụng đĩa đồng thời và chuyên sâu khác cũng sẽ làm điều này.

    Các tập tin lớn là tốt (thử nghiệm tối đa là 8G). Lạm phát kích thước tệp luôn luôn là 3%:

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    8

    Một lượng không gian đĩa khá được sử dụng cho các tệp trung gian trong quá trình mã hóa. Mã hóa một tệp plaintext 8G sẽ tạm thời yêu cầu không gian đĩa TP 28G (tổng):

    % which openssl
    /usr/bin/openssl
    % which srm
    /usr/bin/srm
    9

    Lý do cho các yêu cầu không gian như vậy là, hiện tại, tệp gốc chỉ bị xóa sau khi tất cả các bước khác đã được thực hiện (và được thực hiện thành công). Ý tưởng là để đảm bảo kiểm tra hoàn toàn rằng mọi thứ thực sự thành công. Có lẽ là và có nguy cơ mất dữ liệu cao hơn một chút, theo lý thuyết, một người có thể xóa tệp gốc sau khi mã hóa AES và trước khi lưu trữ nó. Chỉ có tệp được mã hóa (.aes256) trong kho lưu trữ .enC` chứ không phải bản gốc..enc` archive, not the original.

    Các tệp .AES256 lớn hơn bị xóa, rời đi:

    % which openssl
    /usr/bin/openssl
    % which shred
    /usr/bin/shred
    0

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

    Q: Mã hóa có làm cho dữ liệu của tôi an toàn không?

    Trả lời: Hãy nghĩ về nó như thêm một lớp bảo mật khác, bản thân nó không phải là một giải pháp hoàn chỉnh. Có nhiều vấn đề liên quan đến việc đảm bảo dữ liệu của bạn và một mình mã hóa không giải quyết được tất cả chúng một cách kỳ diệu. Bảo mật cần được xem xét ở tất cả các giai đoạn trong quá trình. Mã hóa được cung cấp là mã hóa thực sự mạnh (và như vậy có thể gây ra vấn đề). Quản lý chính là phần khó. Và don lồng bỏ qua các khía cạnh vật lý, pháp lý và thủ tục của an ninh.

    Q: Điều gì sẽ xảy ra nếu khóa riêng RSA riêng của tôi không còn riêng tư?

    A: Rõ ràng, hãy cố gắng tránh tình huống này. Khắc phục: 1) Tạo một cặp khóa RSA mới, và sau đó 2) xoay () mã hóa trên tất cả các tệp được mã hóa bằng khóa công khai được liên kết với khóa riêng bị xâm phạm.Fix: 1) Generate a new RSA key-pair, and then 2) rotate() the encryption on all files that were encrypted using the public key associated with the compromised private key.

    Meta dữ liệu bao gồm thông tin về khóa công khai nào được sử dụng để mã hóa, để giúp xác định các tệp có liên quan dễ dàng hơn. Nhưng ngay cả khi không có thông tin đó, bạn chỉ có thể thử xoay () ‘ing mã hóa trên tất cả các tệp và nó sẽ chỉ thành công cho những người có cặp khóa phù hợp. Các dữ liệu meta không bắt buộc cho xoay chính. Theo thiết kế, Pyfilesec là không cần thiết để xoay (hoặc giải mã). Về cơ bản, nó chỉ là một trình bao bọc để làm cho nó dễ dàng hơn để làm việc với các công cụ mã hóa mạnh, tiêu chuẩn và tài liệu những gì đã được thực hiện và làm thế nào.rotate()‘ing the encryption on all files, and it would only succeed for those with the right key pair. The meta-data are not required for key rotation. By design, pyFileSec is not needed for rotation (or decryption). It is basically just a wrapper to make it easier to work with standard, strong encryption tools, and document what was done and how.

    Hỏi: Tôi nên làm gì nếu khóa riêng RSA riêng tư của tôi đạt đến cuối cuộc sống dự kiến ​​(xem http://www.keylights.com)?

    A: Bạn nên mong đợi để làm điều này. Hàm xoay () giúp làm cho quá trình chuyển đổi này dễ dàng nhất có thể. Chỉ cần tạo một cặp khóa RSA mới và xoay () mã hóa. Sẽ là tầm thường khi viết một hàm ROTATE_ALL () để tìm tất cả các tệp được mã hóa trong một thư mục và xoay mã hóa trên các tệp đó.rotate() function helps make this transition as easy as possible. Just generate a new RSA key-pair, and rotate() the encryption. It would be trivial to write a rotate_all() function to find all encrypted files in a directory, and rotate the encryption on those files.

    Hỏi: Điều gì sẽ xảy ra nếu mật khẩu nội bộ (AES) được tiết lộ (nghĩa là không phải khóa riêng RSA mà là mật khẩu một lần được sử dụng cho mã hóa AES)?

    A: Điều này là vô cùng khó xảy ra trong quá trình hoạt động bình thường. Nếu nó nên xảy ra (ví dụ: có thể là một vụ thất bại hoặc sự cố khác vào thời điểm chính xác?) Nó sẽ ảnh hưởng đến tối đa một tệp. Khắc phục: Chỉ cần xoay () mã hóa cho tệp đó, sử dụng cùng một khóa công khai để mã hóa lại. Mật khẩu một lần nội bộ mới sẽ được tạo trong bước mã hóa lại. (Mật khẩu AES nội bộ không bao giờ được sử dụng lại, đây là một sự khác biệt quan trọng giữa mật khẩu AES và cặp khóa RSA.)Fix: Just rotate() the encryption for that file, using the same public key to re-encrypt. A new internal one-time password will be generated during the re-encryption step. (The internal AES password is never re-used, which is a crucial difference between the AES password and the RSA key pair.)

    Q: Nếu tôi mất chìa khóa riêng thì sao?

    A: Rất tiếc. Khắc phục: Không có. Toàn bộ ý tưởng là, nếu bạn không có khóa riêng, việc khôi phục dữ liệu sẽ rất tốn kém, nếu điều đó thậm chí có thể (và nó được dự định không thể thực hiện được). Bạn nên thiết kế các quy trình của mình theo giả định rằng khôi phục dữ liệu sẽ không xảy ra nếu bạn mất khóa riêng, ngay cả bằng cách thuê ai đó. (Trên thực tế, nếu ai đó có thể làm như vậy, xin vui lòng gửi cho tôi một email riêng với chi tiết, tôi sẽ muốn sửa nó!)Fix: None. The whole idea is that, if you don’t have the private key, data recovery should be prohibitively expensive, if it is even possible (and it is intended to not be possible). You should design your procedures under the assumption that data recovery will not going to happen if you lose the private key, even by hiring someone. (In fact, if someone can do so, please send me a private email with details, I’ll want to fix it!)

    Bạn có thể mật khẩu bảo vệ một tệp TXT không?

    Nhấp chuột phải vào tệp Notepad bạn muốn bảo vệ mật khẩu và chọn Thêm vào Lưu trữ.Bước 2. Trong tab Chung, bạn có thể chọn định dạng lưu trữ giữa RAR, RAR5 và ZIP và nhấp vào Đặt mật khẩu.Bước 3.

    Làm cách nào để mã hóa một tệp trong Python?

    Mã hóa tệp bằng cách sử dụ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 gốc ..
    Mã hóa tệp và lưu trữ nó vào một đối tượng ..
    Sau đó viết dữ liệu được mã hóa vào cùng một tệp NBA.CSV ..

    Làm cách nào để bảo vệ một tệp bằng mật khẩu?

    Sử dụng mã hóa để mật khẩu Bảo vệ một thư mục hoặc tệp điều hướng đến thư mục hoặc tệp bạn muốn mã hóa.Nhấp chuột phải vào mục, nhấp vào thuộc tính, sau đó nhấp vào nâng cao.Kiểm tra nội dung mã hóa để bảo mật dữ liệu.Nhấp vào OK, sau đó nhấp vào Áp dụng.