Cipher Classe

Definizione

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

[Android.Runtime.Register("javax/crypto/Cipher", DoNotGenerateAcw=true)]
public class Cipher : Java.Lang.Object
[<Android.Runtime.Register("javax/crypto/Cipher", DoNotGenerateAcw=true)>]
type Cipher = class
    inherit Object
Ereditarietà
Derivato
Attributi

Commenti

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia. Costituisce il nucleo del framework JCE (Cryptographic Extension) di Java.

Per creare un oggetto di crittografia, l'applicazione chiama il metodo della getInstance crittografia e passa il nome della trasformazione richiesta. Facoltativamente, è possibile specificare il nome di un provider.

Una trasformazione è una stringa che descrive l'operazione (o il set di operazioni) da eseguire sull'input specificato, per produrre un output. Una trasformazione include sempre il nome di un algoritmo di crittografia (ad esempio , DES) e può essere seguito da una modalità di feedback e uno schema di riempimento.

Una trasformazione è del formato:

<ul><li>"algorithm/mode/padding" o

<li>"algorithm" </ul>

(nel secondo caso vengono usati valori predefiniti specifici del provider per la modalità e lo schema di spaziatura interna). Ad esempio, di seguito è riportata una trasformazione valida:

{@code
                Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
            }

L'uso di modalità come CFB e OFB, le crittografie a blocchi possono crittografare i dati in unità inferiori alle dimensioni effettive del blocco della crittografia. Quando si richiede una modalità di questo tipo, è possibile specificare facoltativamente il numero di bit da elaborare alla volta aggiungendo questo numero al nome della modalità, come illustrato nelle trasformazioni "DES/CFB8/NoPadding" e "DES/OFB32/PKCS5Padding". Se non viene specificato alcun numero di questo tipo, viene utilizzato un valore predefinito specifico del provider. Ad esempio, il provider SunJCE usa un valore predefinito di 64 bit per DES. Pertanto, le crittografie a blocchi possono essere trasformate in crittografie di flusso orientate ai byte usando una modalità a 8 bit, ad esempio XAML8 o OFB8.

Le modalità come la crittografia autenticata con i dati associati (AEAD) offrono garanzie di autenticità sia per i dati riservati che per i dati associati aggiuntivi (AAD) non crittografati. Per altre informazioni sugli algoritmi AEAD e AEAD, ad esempio GCM/CCM, vedere RFC 5116. I dati riservati e AAD possono essere usati per calcolare il tag di autenticazione (simile a ).Mac Questo tag viene aggiunto al testo crittografato durante la crittografia e viene verificato durante la decrittografia.

Le modalità AEAD, ad esempio GCM/CCM, eseguono tutti i calcoli di autenticità di AAD prima di avviare i calcoli di autenticità del testo crittografato. Per evitare che le implementazioni debbano memorizzare internamente il testo crittografato nel buffer, tutti i dati AAD devono essere forniti alle implementazioni GCM/CCM (tramite i updateAAD metodi) <b>prima</b> che il testo crittografato venga elaborato (tramite i update metodi e doFinal ).

Si noti che la modalità GCM ha un requisito di univocità per gli IV usati nella crittografia con una determinata chiave. Quando gli IV vengono ripetuti per la crittografia GCM, tali utilizzi sono soggetti a attacchi falsi. Pertanto, dopo ogni operazione di crittografia che usa la modalità GCM, i chiamanti devono inizializzare nuovamente gli oggetti di crittografia con parametri GCM con un valore IV diverso.

GCMParameterSpec s = ...;
                cipher.init(..., s);

                // If the GCM parameters were generated by the provider, it can
                // be retrieved by:
                // cipher.getParameters().getParameterSpec(GCMParameterSpec.class);

                cipher.updateAAD(...);  // AAD
                cipher.update(...);     // Multi-part update
                cipher.doFinal(...);    // conclusion of operation

                // Use a different IV value for every encryption
                byte[] newIv = ...;
                s = new GCMParameterSpec(s.getTLen(), newIv);
                cipher.init(..., s);
                ...

Android fornisce le trasformazioni seguentiCipher: <tabella><thead><tr><th>Algorithm</th th><>Modes</th th><>Paddings</th th><>Supported API Levels</th th><>Notes</th></tr></thead><tbody><tr><td rowspan="3"><span style="white-space: nowrap">AES</span></td td span><>< style="white-space: nowrap"CBC>/span<br><span style="white-space: nowrap"><ROUTE>/span br<span style="white-space: nowrap"><><CTR>/span<br><span style="white-space: nowrap"><CTS>/span<span><br><span style="white-space: nowrap">ECB</span><br><span style="white-space: nowrap">OFB</span/td td><><span>< style="white-space: nowrap">ISO10126Padding</span br><span><style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span></td td><><span style="white-space: nowrap">: nowrap 1+</span></td td><></td></tr tr><><td><span style="white-space: nowrap">GCM</span></td td><><span style="white-space: nowrap">NoPadding/< span></td><td><span style="white-space: nowrap">10+</span></td><td><></tr tr><><td><span style="white-space: nowrap"GCM-SIV>/span</td><>td<span style="white-space: nowrap"><NoPadding>/span</td td td><><span style="white-space: nowrap><">30+</span></td><td><></tr tr><><td rowspan="3"><span style="white-space: nowrap">AES_128</span></td td><><span style="white-space: nowrap">CBC</span><br><span style="white-space: nowrap">ECB</span></td td><><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap"PKCS5Padding/span span style="white-space: nowrap">PKCS5Padding</span></td><><td span style="white-space: nowrap">26+</span></td td><></td></tr tr><><td><span style="white-space: nowrap">GCM</span></td td td>span style="white-space: nowrap"<NoPadding></span>/td<><td>span style="white-space: nowrap"<26+></span>/td<><td><></td/tr><><><td><span style="white-space: nowrap">GCM-SIV</span></td td td><><span style="white-space: nowrap"NoPadding>/span</td td><><span style="white-space: nowrap"30+></span>/td td td<><><></tr><td><rowspan="3"><span style="white-space: nowrap"><>AES_256</span></td td><><span style="white-space: nowrap"CBC>/span<br><span style="white-space: nowrap"><ECB>/span</td td td><><span style="white-space: nowrap"><NoPadding>/span<br><span style="white-space: nowrap"><PKCS5Padding>/span</td td><><span style="white-space: nowrap"><>26+</span></td><td><></tr><><td><span style="white-space: nowrap">GCM</span></td td><><span style="white-space: nowrap"NoPadding>/span</td td td><><span style="white-space: nowrap"><26+>/span</td td td><></><>tr<><>td<span style="white-space: nowrap"><>GCM-SIV</span></td td><><span style="white-space: nowrap">NoPadding</span></td td td><><span style="white-space: nowrap">30+</span></td td><></td></tr tr><><td rowspan="2"><span style="white-space: nowrap">ARC4</span></td td><><span style="white-space: nowrap">ECB</span></td td><><span style="white-space: nowrap">NoPadding/< span></td><td><span style="white-space: nowrap">10+</span></td><td><></tr tr><><td><span style="white-space: nowrap"NONE>/span</td td><><span style="white-space: nowrap"><NoPadding>/span</td td><><span style="white-space: nowrap"><>28+</span></td><td td><></tr tr><><td><span style="white-space: nowrap"BLOWFISH>/span/span< td><><span style="white-space: nowrap"CBC></span>br<span style="white-space: nowrap"><NOWRAP"><SPAN>< br><style="white-space: nowrap"><CTR>/span<br><span style="white-space: nowrap"><>CTS</span><br><span style="white-space: nowrap" >ECB</span><br><span style="white-space: nowrap">OFB</span></td td><><span style="white-space: nowrap"ISO10126Padding/span br span style="white-space: nowrap"ISO10126Padding/span br span style="white-space: nowrap">ISO10126Padding</span><br><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span/td td td><><span>< style="white-space: nowrap">10+</span></td td><></td></tr tr><><td><span style="white-space: nowrap"ChaCha20>/span</td><>td<span style="white-space: nowrap"><NONE>/span<br><span style="white-space: nowrap"><Poly1305>/span</td td><>span style="white-space: nowrap"<NoPadding></span>/td td<><>span style="white-space: nowrap"<><28+>/span</td><><td>ChaCha con 20 round, nonce a 96 bit e contatore a 32 bit come descritto in RFC 7539.</td></tr tr><><td><span style="white-space: nowrap">DES</span></td td><><span style="white-space: nowrap"CBC>/span<br><span style="white-space: nowrap"><SPAN>< br><style="white-space: nowrap"><CTR>/span<br><span style="white-space: nowrap"><>CTS</span><br><span style="white-space: nowrap" >BCE</span><br><span style="white-space: nowrap">OFB</span></td td><><span style="white-space: nowrap">ISO10126Padding</span><br><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span/td td td><><span>< style="white-space: nowrap">1+</span></td td><></td></tr tr><><td><span style="white-space: nowrap"DESede>/span</td td><><span style="white-space: nowrap"CBC></span>br<span style="white-space: nowrap"><><SPAN>< style><="white-space: nowrap"><CTR>/span<br><span style="white-space: nowrap"><>CTS</span><br><span style="white-space: nowrap">ECB/< span><br><span style="white-space: nowrap">OFB</span></td td td><><span style="white-space: nowrap">ISO10126Padding</span><br><span style="white-space: nowrap">: nowrap NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span/td td td><><span>< style="white-space: nowrap">1+</span></td td><></td></tr><tr><td rowspan="3"><span style="white-space: nowrap">RSA</span></td td td><rowspan="3"><span style="white-space: nowrap">ECB</span><br><span style="white--space: nowrap">NONE</span></td td><><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">OAEPPadding</span><br><span style=" white-space: nowrap">PKCS1Padding</span></td td td><><span style="white-space: nowrap">1+</span></td td>/td<><></tr tr><><td><span style="white-space: nowrap">OAEPwithSHA-1andMGF1Padding</span><br><span style="white-space: nowrap">OAEPwithSHA-256andMGF1Padding</span></td td><><span style=" white-space: nowrap"10+/span>/td td<><>/td/tr tr<><><td><> span style="white-space: nowrap"<><OAEPwithSHA-224andMGF1Padding>/span<br><span style="white-space: nowrap"><OAEPwithSHA-384andMGF1Padding>/span<br><span style="white-space: nowrap"><OAEPwithSHA-512andMGF1Padding>/span</td td><><span style=">< spazio vuoto: nowrap">23+</span></td td><></td></tr></tbody></table>

Queste trasformazioni sono descritte nella sezione Crittografia della documentazione relativa al nome dell'algoritmo standard dell'architettura di crittografia Java.

Aggiunta nella versione 1.4.

per javax.crypto.Cipher.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
Cipher(CipherSpi, Provider, String)

Crea un oggetto di crittografia.

Cipher(IntPtr, JniHandleOwnership)

Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

Campi

Nome Descrizione
DecryptMode
Obsoleti.

Costante utilizzata per inizializzare la crittografia in modalità decrittografia.

EncryptMode
Obsoleti.

Costante utilizzata per inizializzare la crittografia in modalità di crittografia.

PrivateKey
Obsoleti.

Costante utilizzata per indicare che la chiave to-be-unwrapped è una "chiave privata".

PublicKey
Obsoleti.

Costante utilizzata per indicare che la chiave to-be-unwrapped è una "chiave pubblica".

SecretKey
Obsoleti.

Costante usata per indicare che la chiave to-be-unwrapped è una "chiave privata".

UnwrapMode
Obsoleti.

Costante utilizzata per inizializzare la crittografia in modalità key-unwrapping.

WrapMode
Obsoleti.

Costante utilizzata per inizializzare la crittografia in modalità di wrapping delle chiavi.

Proprietà

Nome Descrizione
Algorithm

Restituisce il nome dell'algoritmo dell'oggetto Cipher .

BlockSize

Restituisce le dimensioni del blocco (in byte).

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
ExemptionMechanism

Restituisce l'oggetto meccanismo di esenzione utilizzato con questa crittografia.

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
JniPeerMembers

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

Parameters

Restituisce i parametri utilizzati con questa crittografia.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
Provider

Restituisce il provider di questo Cipher oggetto.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Metodi

Nome Descrizione
Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
DoFinal()

Completa un'operazione di crittografia o decrittografia in più parti, a seconda della modalità di inizializzazione di questa crittografia.

DoFinal(Byte[], Int32, Int32, Byte[], Int32)

Crittografa o decrittografa i dati in un'operazione a singola parte o completa un'operazione in più parti.

DoFinal(Byte[], Int32, Int32, Byte[])

Crittografa o decrittografa i dati in un'operazione a singola parte o completa un'operazione in più parti.

DoFinal(Byte[], Int32, Int32)

Crittografa o decrittografa i dati in un'operazione a singola parte o completa un'operazione in più parti.

DoFinal(Byte[], Int32)

Completa un'operazione di crittografia o decrittografia in più parti, a seconda della modalità di inizializzazione di questa crittografia.

DoFinal(Byte[])

Crittografa o decrittografa i dati in un'operazione a singola parte o completa un'operazione in più parti.

DoFinal(ByteBuffer, ByteBuffer)

Crittografa o decrittografa i dati in un'operazione a singola parte o completa un'operazione in più parti.

Equals(Object)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
GetInstance(String, Provider)

Restituisce un Cipher oggetto che implementa la trasformazione specificata.

GetInstance(String, String)

Restituisce un Cipher oggetto che implementa la trasformazione specificata.

GetInstance(String)

Restituisce un Cipher oggetto che implementa la trasformazione specificata.

GetIV()

Restituisce il vettore di inizializzazione (IV) in un nuovo buffer.

GetMaxAllowedKeyLength(String)

Restituisce la lunghezza massima della chiave per la trasformazione specificata in base ai file dei criteri di giurisdizione JCE installati.

GetMaxAllowedParameterSpec(String)

Restituisce un oggetto AlgorithmParameterSpec che contiene il valore massimo del parametro di crittografia in base al file dei criteri di giurisdizione.

GetOutputSize(Int32)

Restituisce la lunghezza in byte che un buffer di output deve essere per contenere il risultato dell'operazione o update successivadoFinal, data la lunghezza inputLen di input in byte.

Init(CipherMode, Certificate, SecureRandom)

Inizializza questa crittografia con la chiave pubblica del certificato specificato e un'origine di casualità.

Init(CipherMode, Certificate)

Inizializza questa crittografia con la chiave pubblica dal certificato specificato.

Init(CipherMode, IKey, AlgorithmParameters, SecureRandom)

Inizializza questa crittografia con una chiave, un set di parametri dell'algoritmo e un'origine di casualità.

Init(CipherMode, IKey, AlgorithmParameters)

Inizializza questa crittografia con una chiave e un set di parametri dell'algoritmo.

Init(CipherMode, IKey, IAlgorithmParameterSpec, SecureRandom)

Inizializza questa crittografia con una chiave, un set di parametri dell'algoritmo e un'origine di casualità.

Init(CipherMode, IKey, IAlgorithmParameterSpec)

Inizializza questa crittografia con una chiave e un set di parametri dell'algoritmo.

Init(CipherMode, IKey, SecureRandom)

Inizializza questa crittografia con una chiave e una fonte di casualità.

Init(CipherMode, IKey)

Inizializza questa crittografia con una chiave.

JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Unwrap(Byte[], String, KeyType)

Annullare il wrapping di una chiave di cui è stato eseguito il wrapping in precedenza.

Update(Byte[], Int32, Int32, Byte[], Int32)

Continua un'operazione di crittografia o decrittografia in più parti (a seconda della modalità di inizializzazione di questa crittografia), elaborando un'altra parte di dati.

Update(Byte[], Int32, Int32, Byte[])

Continua un'operazione di crittografia o decrittografia in più parti (a seconda della modalità di inizializzazione di questa crittografia), elaborando un'altra parte di dati.

Update(Byte[], Int32, Int32)

Continua un'operazione di crittografia o decrittografia in più parti (a seconda della modalità di inizializzazione di questa crittografia), elaborando un'altra parte di dati.

Update(Byte[])

Continua un'operazione di crittografia o decrittografia in più parti (a seconda della modalità di inizializzazione di questa crittografia), elaborando un'altra parte di dati.

Update(ByteBuffer, ByteBuffer)

Continua un'operazione di crittografia o decrittografia in più parti (a seconda della modalità di inizializzazione di questa crittografia), elaborando un'altra parte di dati.

UpdateAAD(Byte[], Int32, Int32)

Continua un aggiornamento in più parti dei dati di autenticazione aggiuntivi (AAD), usando un subset del buffer fornito.

UpdateAAD(Byte[])

Continua un aggiornamento in più parti dei dati di autenticazione aggiuntivi (AAD).

UpdateAAD(ByteBuffer)

Continua un aggiornamento in più parti dei dati di autenticazione aggiuntivi (AAD).

Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wrap(IKey)

Eseguire il wrapping di una chiave.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

(Ereditato da JavaObject)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Questa classe fornisce la funzionalità di crittografia per la crittografia e la decrittografia.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a