Cipher Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
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 |
| BlockSize |
Restituisce le dimensioni del blocco (in byte). |
| Class |
Restituisce la classe di runtime di questo |
| 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 |
| 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 |
| GetInstance(String, String) |
Restituisce un |
| GetInstance(String) |
Restituisce un |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| 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 |