Cipher Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado.
[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
- Herencia
- Derivado
- Atributos
Comentarios
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. Forma el núcleo del marco de Java extensión criptográfica (JCE).
Para crear un objeto Cipher, la aplicación llama al método cipher getInstance y pasa el nombre de la transformación solicitada. Opcionalmente, se puede especificar el nombre de un proveedor.
Una transformación es una cadena que describe la operación (o conjunto de operaciones) que se va a realizar en la entrada especificada, para generar algún resultado. Una transformación siempre incluye el nombre de un algoritmo criptográfico (por ejemplo, DES) y puede ir seguido de un modo de comentarios y un esquema de relleno.
Una transformación tiene el formato :
<ul><li>"algorithm/mode/padding" o
<li>"algorithm" </ul>
(en este último caso, se usan valores predeterminados específicos del proveedor para el modo y el esquema de relleno). Por ejemplo, lo siguiente es una transformación válida:
{@code
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
}
El uso de modos como CFB y OFB, los cifrados de bloques pueden cifrar los datos en unidades más pequeñas que el tamaño real del bloque del cifrado. Al solicitar este modo, puede especificar opcionalmente el número de bits que se procesarán a la vez anexando este número al nombre del modo, tal como se muestra en las transformaciones "DES/CFB8/NoPadding" y "DES/OFB32/PKCS5Padding". Si no se especifica este número, se usa un valor predeterminado específico del proveedor. (Por ejemplo, el proveedor SunJCE usa un valor predeterminado de 64 bits para DES). Por lo tanto, los cifrados de bloques se pueden convertir en cifrados de flujo orientados a bytes mediante un modo de 8 bits, como CFB8 o OFB8.
Los modos como El cifrado autenticado con datos asociados (AEAD) proporcionan garantías de autenticidad para datos confidenciales y datos asociados adicionales (AAD) que no están cifrados. (Consulte RFC 5116 para obtener más información sobre los algoritmos AEAD y AEAD, como GCM/CCM). Los datos confidenciales y de AAD se pueden usar al calcular la etiqueta de autenticación (similar a ).Mac Esta etiqueta se anexa al texto cifrado durante el cifrado y se comprueba en el descifrado.
Los modos AEAD, como GCM/CCM, realizan todos los cálculos de autenticidad de AAD antes de iniciar los cálculos de autenticidad de texto cifrado. Para evitar que las implementaciones tengan que almacenar internamente el texto cifrado en búfer, se deben proporcionar todos los datos de AAD a las implementaciones de GCM/CCM (a través de los updateAAD métodos) <b>antes< o b> del texto cifrado (a través de los update métodos y doFinal ).
Tenga en cuenta que el modo GCM tiene un requisito de unicidad en las IVs que se usan en el cifrado con una clave determinada. Cuando se repiten las IV para el cifrado GCM, estos usos están sujetos a ataques de falsificación. Por lo tanto, después de cada operación de cifrado mediante el modo GCM, los llamadores deben volver a inicializar los objetos de cifrado con parámetros GCM que tienen un valor IV diferente.
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 proporciona las siguientes Cipher transformaciones: <tabla><el><algoritmo tr><th>algoritmo</th><>Modos</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 span style="white-space: nowrap">CFB</span><br><span style="white-space: nowrap">CTR</span><br><span span style="white-space: nowrap">CTS</span><br><span style="white-space: nowrap">ECB</span><br><span 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><span style="white-space: nowrap">PKCS5Padding</span></td td><><span style="white-space: nowrap ">1+</span></td><td/td><></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><></td></tr tr><><td><span style="white-space: nowrap"GCM-SIV>/span/td td<><span style="white-space: nowrap">NoPadding</span></td td><><span style="white-space: nowrap"><30+></>span</><><td 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><><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/td><></tr tr><td><><span style="white-space: nowrap">GCM</span/td td><><span style="white-space: nowrap"><NoPadding>/span</td td td><><span="white-space: nowrap"><26+>/span<></td><td></td></tr tr><td>span style="white-space: nowrap"<GCM-SIV></span>/td<><td>span style="white-space: nowrap"<NoPadding></span/td td><><span style="white-space: nowrap"30+>/span/td<><td td/td> td<>< tr td><><>rowspan="3"<span> style="white-space: nowrap"<>AES_256</span><>/td td<><td><><span style="white-space: nowrap">CBC</span><br><span span style="white-space: nowrap">ECB</span></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></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">26+</span></td><td td></td>< tr><td><><span style="white-space: nowrap">GCM-SIV</span></td><td><span style="white-space: nowrap">NoPadding</span></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><></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>/td td<><>span style="white-space: nowrap"<CBC></span br>span style="white-space: nowrap"<CFB></span br><span>span style="white-space: nowrap"<CTR></span><br>span style="white-space: nowrap"<CTS></span><>br<span span style="white-space: nowrap"><><>ECB</span><br><span 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">10+</span></td 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 rondas, nonce de 96 bits y contador de 32 bits como se describe en RFC 7539.</td></tr tr td><><><span style="white-space: nowrap">DES</span></td td><><span style="white-space: nowrap"CBC>/span br<span span style="white-space: nowrap"><CFB></span>br<span span style="white-space: nowrap"><CTR></span>br<span span style="white-space: nowrap"><><CTS>/span<><br><span 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 span><style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span></td td><><span style="white-space: nowrap">1+</span></td 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">CFB</span br><span><span style="white-space: nowrap"CTR>/span<br><span 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><span style="white-space: nowrap">NoPadding</span><br><span span style="white-space: nowrap">PKCS5Padding</span></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><>rowspan="3"<span style="white-space: nowrap"><ECB>/span br<><span style="white espacio: nowrap"><NONE>/span</td td><><span style="white-space: nowrap"><NoPadding>/span<br><span span style="white-space: nowrap"><OAEPPadding>/span br<span><span style=">< espacio en blanco: nowrap">PKCS1Padding</span/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=" espacio en blanco: nowrap">10+</span></td td></td><></tr tr><td><><span style="white-space: nowrap">OAEPwithSHA-224andMGF1Padding</span br><span span><style="white-space: nowrap">OAEPwithSHA-384andMGF1Padding</span br><span><span style="white-space: nowrap">OAEPwithSHA-512andMGF1Padding</span/td td><><span>< style=" espacio en blanco: nowrap">23+</span></td td></td><></tr/tbody><></table>
Estas transformaciones se describen en la sección Cifrado de la documentación de nombre de algoritmo estándar de arquitectura de criptografía de Java.
Agregado en la versión 1.4.
Java documentación para javax.crypto.Cipher.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| Cipher(CipherSpi, Provider, String) |
Crea un objeto Cipher. |
| Cipher(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
Campos
| Nombre | Description |
|---|---|
| DecryptMode |
Obsoletos.
Constante usada para inicializar el cifrado en modo de descifrado. |
| EncryptMode |
Obsoletos.
Constante usada para inicializar el cifrado en modo de cifrado. |
| PrivateKey |
Obsoletos.
Constante usada para indicar que la clave to-be-unwrapped es una "clave privada". |
| PublicKey |
Obsoletos.
Constante usada para indicar que la clave to-be-unwrapped es una "clave pública". |
| SecretKey |
Obsoletos.
Constante usada para indicar que la clave to-be-unwrapped es una "clave secreta". |
| UnwrapMode |
Obsoletos.
Constante usada para inicializar el cifrado en modo de desencapsulado de claves. |
| WrapMode |
Obsoletos.
Constante usada para inicializar el cifrado en modo de ajuste de claves. |
Propiedades
| Nombre | Description |
|---|---|
| Algorithm |
Devuelve el nombre del algoritmo de este |
| BlockSize |
Devuelve el tamaño del bloque (en bytes). |
| Class |
Devuelve la clase en tiempo de ejecución de este |
| ExemptionMechanism |
Devuelve el objeto del mecanismo de exención utilizado con este cifrado. |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| JniPeerMembers |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. |
| Parameters |
Devuelve los parámetros usados con este cifrado. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| Provider |
Devuelve el proveedor de este |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| DoFinal() |
Finaliza una operación de cifrado o descifrado de varias partes, en función de cómo se inicializó este cifrado. |
| DoFinal(Byte[], Int32, Int32, Byte[], Int32) |
Cifra o descifra datos en una operación de una sola parte o finaliza una operación de varias partes. |
| DoFinal(Byte[], Int32, Int32, Byte[]) |
Cifra o descifra datos en una operación de una sola parte o finaliza una operación de varias partes. |
| DoFinal(Byte[], Int32, Int32) |
Cifra o descifra datos en una operación de una sola parte o finaliza una operación de varias partes. |
| DoFinal(Byte[], Int32) |
Finaliza una operación de cifrado o descifrado de varias partes, en función de cómo se inicializó este cifrado. |
| DoFinal(Byte[]) |
Cifra o descifra datos en una operación de una sola parte o finaliza una operación de varias partes. |
| DoFinal(ByteBuffer, ByteBuffer) |
Cifra o descifra datos en una operación de una sola parte o finaliza una operación de varias partes. |
| Equals(Object) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| GetInstance(String, Provider) |
Devuelve un |
| GetInstance(String, String) |
Devuelve un |
| GetInstance(String) |
Devuelve un |
| GetIV() |
Devuelve el vector de inicialización (IV) en un nuevo búfer. |
| GetMaxAllowedKeyLength(String) |
Devuelve la longitud máxima de clave para la transformación especificada según los archivos de directiva de jurisdicción de JCE instalados. |
| GetMaxAllowedParameterSpec(String) |
Devuelve un objeto AlgorithmParameterSpec que contiene el valor máximo del parámetro de cifrado según el archivo de directiva de jurisdicción. |
| GetOutputSize(Int32) |
Devuelve la longitud en bytes que tendría que tener un búfer de salida para contener el resultado de la siguiente |
| Init(CipherMode, Certificate, SecureRandom) |
Inicializa este cifrado con la clave pública del certificado especificado y un origen de aleatoriedad. |
| Init(CipherMode, Certificate) |
Inicializa este cifrado con la clave pública del certificado especificado. |
| Init(CipherMode, IKey, AlgorithmParameters, SecureRandom) |
Inicializa este cifrado con una clave, un conjunto de parámetros de algoritmo y un origen de aleatoriedad. |
| Init(CipherMode, IKey, AlgorithmParameters) |
Inicializa este cifrado con una clave y un conjunto de parámetros de algoritmo. |
| Init(CipherMode, IKey, IAlgorithmParameterSpec, SecureRandom) |
Inicializa este cifrado con una clave, un conjunto de parámetros de algoritmo y un origen de aleatoriedad. |
| Init(CipherMode, IKey, IAlgorithmParameterSpec) |
Inicializa este cifrado con una clave y un conjunto de parámetros de algoritmo. |
| Init(CipherMode, IKey, SecureRandom) |
Inicializa este cifrado con una clave y un origen de aleatoriedad. |
| Init(CipherMode, IKey) |
Inicializa este cifrado con una clave. |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Unwrap(Byte[], String, KeyType) |
Desencapsular una clave encapsulada anteriormente. |
| Update(Byte[], Int32, Int32, Byte[], Int32) |
Continúa una operación de cifrado o descifrado de varias partes (dependiendo de cómo se inicializó este cifrado), procesando otra parte de datos. |
| Update(Byte[], Int32, Int32, Byte[]) |
Continúa una operación de cifrado o descifrado de varias partes (dependiendo de cómo se inicializó este cifrado), procesando otra parte de datos. |
| Update(Byte[], Int32, Int32) |
Continúa una operación de cifrado o descifrado de varias partes (dependiendo de cómo se inicializó este cifrado), procesando otra parte de datos. |
| Update(Byte[]) |
Continúa una operación de cifrado o descifrado de varias partes (dependiendo de cómo se inicializó este cifrado), procesando otra parte de datos. |
| Update(ByteBuffer, ByteBuffer) |
Continúa una operación de cifrado o descifrado de varias partes (dependiendo de cómo se inicializó este cifrado), procesando otra parte de datos. |
| UpdateAAD(Byte[], Int32, Int32) |
Continúa una actualización de varias partes de los datos de autenticación adicionales (AAD), mediante un subconjunto del búfer proporcionado. |
| UpdateAAD(Byte[]) |
Continúa una actualización de varias partes de los datos de autenticación adicionales (AAD). |
| UpdateAAD(ByteBuffer) |
Continúa una actualización de varias partes de los datos de autenticación adicionales (AAD). |
| Wait() |
Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wrap(IKey) |
Encapsular una clave. |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. (Heredado de JavaObject) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Esta clase proporciona la funcionalidad de un cifrado criptográfico para el cifrado y el descifrado. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |