Encryption

Encryption — Aspose.Cells FOSS for Python API Reference

aspose-cells-foss supporta la crittografia e la decrittazione AES dei file XLSX tramite le funzioni a livello di modulo encrypt_xlsx e decrypt_xlsx. Due classi di parametri configurano l’algoritmo di cifratura, l’algoritmo di hash e il conteggio di spin PBKDF2. Il valore predefinito consigliato è AgileEncryptionParameters con AES-256 e SHA-512.

ImageRenderOptions: aspose.cells_foss

from aspose.cells_foss import (
    CipherAlgorithm, HashAlgorithm,
    AgileEncryptionParameters, StandardEncryptionParameters,
    encrypt_xlsx, decrypt_xlsx, get_default_encryption_params,
)

CipherAlgorithm

CipherAlgorithm è un IntEnum specificando la lunghezza della chiave AES. Tutte le varianti usano AES in modalità CBC con una dimensione del blocco di 16 byte.

ImageRenderOptionsBit chiavealg_id
AES_128128
AES_192192
AES_256256

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
algorithm_namestrImageRenderOptions "AES".
key_bitsintLunghezza della chiave AES in bit (128, 192 o 256).
alg_idintIdentificatore numerico dell’algoritmo usato nel record di crittografia OOXML.
key_bytesintLunghezza della chiave in byte (key_bits // 8).
block_sizeintImageRenderOptions 16 (dimensione del blocco AES in byte).

HashAlgorithm

HashAlgorithm è un IntEnum specificare la funzione hash utilizzata per la derivazione della chiave PBKDF2.

ImageRenderOptionsByte di hashalg_id
SHA120
SHA25632
SHA38448
SHA51264

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
algorithm_namestrNome della funzione hash (ad es., "SHA-512").
hash_bytesintLunghezza del digest in byte.
alg_idintIdentificatore numerico dell’algoritmo utilizzato nel record di crittografia OOXML.

AgileEncryptionParameters

AgileEncryptionParameters configura lo schema di crittografia Agile (ECMA-376, parte 4), che è il formato predefinito e consigliato per i file Excel moderni (Excel 2010+).

ImageRenderOptions

AgileEncryptionParameters(
    cipher_algorithm=CipherAlgorithm.AES_256,
    hash_algorithm=HashAlgorithm.SHA512,
    spin_count=100000
)
ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
cipher_algorithmCipherAlgorithmAES_256Lunghezza della chiave AES da utilizzare.
hash_algorithmHashAlgorithmSHA512Funzione hash per la derivazione della chiave PBKDF2.
spin_countint100000Numero di iterazioni PBKDF2. Valori più alti aumentano la resistenza al brute‑force a scapito del tempo di apertura/salvataggio.

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
encryption_typestrImageRenderOptions "agile".
cipher_algorithmCipherAlgorithmCifrario configurato.
hash_algorithmHashAlgorithmFunzione hash configurata.
spin_countintConteggio delle iterazioni PBKDF2.
salt_sizeintLunghezza del sale in byte (derivata dalla dimensione del blocco del cifrario).
block_sizeintDimensione del blocco del cifrario in byte (sempre 16 per AES).
key_bitsintLunghezza della chiave in bit.

StandardEncryptionParameters

StandardEncryptionParameters configura lo schema di Crittografia Standard per la compatibilità con Excel 2007. Preferire AgileEncryptionParameters per i nuovi file.

ImageRenderOptions

StandardEncryptionParameters(
    cipher_algorithm=CipherAlgorithm.AES_128,
    hash_algorithm=HashAlgorithm.SHA1,
    spin_count=50000
)

Le proprietà rispecchiano quelle di AgileEncryptionParameters. Il encryption_type proprietà è "standard".


Funzioni del Modulo

encrypt_xlsx

encrypt_xlsx(
    input_path: str,
    output_path: str,
    password: str,
    encryption_params=None
) -> None

Legge il file XLSX in input_path, lo cripta con password usando il specificato encryption_params, e scrive il file crittografato in output_path.

ImageRenderOptionsImageRenderOptionsImageRenderOptions
input_pathstrPercorso del file XLSX di origine.
output_pathstrPercorso di destinazione per il file crittografato. Può essere lo stesso di input_path per la crittografia in loco.
passwordstrPassword di crittografia.
encryption_params`AgileEncryptionParametersStandardEncryptionParameters

decrypt_xlsx

decrypt_xlsx(
    input_path: str,
    output_path: str,
    password: str
) -> bool

Decripta il file XLSX in input_path usando password e scrive il XLSX in chiaro su output_path. Restituisce True se la decrittazione ha avuto successo, False se la password era errata o il file non era crittografato.

get_default_encryption_params

get_default_encryption_params() -> AgileEncryptionParameters

Restituisce un AgileEncryptionParameters istanza configurata con AES_256, SHA512, e spin_count=100000. Usa questo per ispezionare o clonare le impostazioni predefinite della libreria prima di personalizzarle.


ImageRenderOptions

Cifra un Workbook

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)

Decifra un Workbook

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.")

Apri direttamente un file crittografato

ImageRenderOptions Workbook il costruttore accetta anche un password parametro per aprire file crittografati senza un passaggio di decrittazione separato:

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!")

Vedi anche

 Italiano