Encryption — Aspose.Cells FOSS for Python API Reference
aspose-cells-foss поддържа AES криптиране и декриптиране на XLSX файлове чрез функциите на ниво модул encrypt_xlsx и decrypt_xlsx. Два класа с параметри конфигурират алгоритъма за шифър, алгоритъма за хеш и броя на завъртанията на PBKDF2. Препоръчителната стойност по подразбиране е AgileEncryptionParameters с AES-256 и SHA-512.
Example: aspose.cells_foss
from aspose.cells_foss import (
CipherAlgorithm, HashAlgorithm,
AgileEncryptionParameters, StandardEncryptionParameters,
encrypt_xlsx, decrypt_xlsx, get_default_encryption_params,
)CipherAlgorithm
CipherAlgorithm е IntEnum указва дължината на AES ключа. Всички варианти използват AES в CBC режим с блоков размер от 16 байта.
| Example | Битове на ключа | alg_id |
|---|---|---|
AES_128 | 128 | — |
AES_192 | 192 | — |
AES_256 | 256 | — |
Example
| Example | Example | Example |
|---|---|---|
algorithm_name | str | Example "AES". |
key_bits | int | Дължина на AES ключа в битове (128, 192 или 256). |
alg_id | int | Числов идентификатор на алгоритъма, използван в записа за шифроване на OOXML. |
key_bytes | int | Дължина на ключа в байтове (key_bits // 8). |
block_size | int | Example 16 (размер на блок на AES в байтове). |
HashAlgorithm
HashAlgorithm е IntEnum указваща хеш функцията, използвана за извеждане на ключ с PBKDF2.
| Example | Хеш байтове | alg_id |
|---|---|---|
SHA1 | 20 | — |
SHA256 | 32 | — |
SHA384 | 48 | — |
SHA512 | 64 | — |
Example
| Example | Example | Example |
|---|---|---|
algorithm_name | str | Име на хеш функция (например,., "SHA-512"). |
hash_bytes | int | Дължина на дайджеста в байтове. |
alg_id | int | Числов идентификатор на алгоритъма, използван в записа за шифроване на OOXML. |
AgileEncryptionParameters
AgileEncryptionParameters Конфигурира схемата за Agile Encryption (ECMA-376, част 4), която е подразбираният и препоръчителен формат за съвременни Excel файлове (Excel 2010+).
Example
AgileEncryptionParameters(
cipher_algorithm=CipherAlgorithm.AES_256,
hash_algorithm=HashAlgorithm.SHA512,
spin_count=100000
)| Example | Example | Example | Example |
|---|---|---|---|
cipher_algorithm | CipherAlgorithm | AES_256 | Дължина на AES ключа, който да се използва. |
hash_algorithm | HashAlgorithm | SHA512 | Хеш функция за извеждане на ключ с PBKDF2. |
spin_count | int | 100000 | Брой итерации на PBKDF2. По-високите стойности увеличават съпротивата срещу брутфорс, но удължават времето за отваряне/запис. |
Example
| Example | Example | Example |
|---|---|---|
encryption_type | str | Example "agile". |
cipher_algorithm | CipherAlgorithm | Конфигуриран шифър. |
hash_algorithm | HashAlgorithm | Конфигурирана хеш функция. |
spin_count | int | Брой итерации на PBKDF2. |
salt_size | int | Дължина на солта в байтове (извлечена от размера на блокa на шифъра). |
block_size | int | Размер на блокa на шифъра в байтове (винаги 16 за AES). |
key_bits | int | Дължина на ключа в битове. |
StandardEncryptionParameters
StandardEncryptionParameters конфигурира стандартната схема за шифроване за съвместимост с Excel 2007. Препоръчва се AgileEncryptionParameters за нови файлове.
Example
StandardEncryptionParameters(
cipher_algorithm=CipherAlgorithm.AES_128,
hash_algorithm=HashAlgorithm.SHA1,
spin_count=50000
)Свойствата отразяват тези на AgileEncryptionParameters. Тези encryption_type свойството е "standard".
API справка за DataValidationType, DataValidationOperator, DataValidationAlertStyle, DataValidationImeMode, DataValidation и DataValidationCollection в aspose-cells-foss.
encrypt_xlsx
encrypt_xlsx(
input_path: str,
output_path: str,
password: str,
encryption_params=None
) -> NoneЧете XLSX файла на input_path, криптира го с password използвайки указаното encryption_params, и записва криптирания файл в output_path.
| Example | Example | Example |
|---|---|---|
input_path | str | Път към изходния XLSX файл. |
output_path | str | Път за местоназначение на криптирания файл. Може да бъде същият като input_path за криптиране на място. |
password | str | Парола за шифроване. |
encryption_params | `AgileEncryptionParameters | StandardEncryptionParameters |
decrypt_xlsx
decrypt_xlsx(
input_path: str,
output_path: str,
password: str
) -> boolДекриптира XLSX файла в input_path използвайки password и записва чистия XLSX в output_path. Връща True ако декриптирането е успешно, False ако паролата беше грешна или файлът не беше криптиран.
get_default_encryption_params
get_default_encryption_params() -> AgileEncryptionParametersВръща AgileEncryptionParameters екземпляр, конфигуриран с AES_256, SHA512, и spin_count=100000. Използвайте това, за да прегледате или клонирате подразбиращите се настройки на библиотеката, преди да ги персонализирате.
Example
Криптиране на работна книга
from aspose.cells_foss import Workbook, encrypt_xlsx, AgileEncryptionParameters, CipherAlgorithm, HashAlgorithm
# 1. Build and save an unencrypted workbook
wb = Workbook()
ws = wb.worksheets[0]
ws.cells["A1"].put_value("Confidential data")
wb.save("report.xlsx")
# 2. Encrypt with default AES-256/SHA-512 settings
encrypt_xlsx("report.xlsx", "report_secure.xlsx", password="MyP@ssw0rd!")
# 3. Alternatively, use a lower spin count for faster open/save cycles during development
params = AgileEncryptionParameters(
cipher_algorithm=CipherAlgorithm.AES_256,
hash_algorithm=HashAlgorithm.SHA256,
spin_count=10000,
)
encrypt_xlsx("report.xlsx", "report_dev.xlsx", password="dev_only", encryption_params=params)Декриптиране на работна книга
from aspose.cells_foss import decrypt_xlsx, Workbook
success = decrypt_xlsx("report_secure.xlsx", "report_decrypted.xlsx", password="MyP@ssw0rd!")
if success:
wb = Workbook("report_decrypted.xlsx")
print(wb.worksheets[0].cells["A1"].value)
else:
print("Incorrect password or file is not encrypted.")Отворете криптиран файл директно
Example Workbook конструкторът също приема password параметър за отваряне на криптирани файлове без отделна стъпка за декриптиране:
from aspose.cells_foss import Workbook
wb = Workbook("report_secure.xlsx", password="MyP@ssw0rd!")
print(wb.worksheets[0].cells["A1"].value)
wb.save("report_updated_secure.xlsx", password="MyP@ssw0rd!")