Cipher Clase

Definición

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 Cipher objeto.

BlockSize

Devuelve el tamaño del bloque (en bytes).

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
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 Cipher objeto.

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 Cipher objeto que implementa la transformación especificada.

GetInstance(String, String)

Devuelve un Cipher objeto que implementa la transformación especificada.

GetInstance(String)

Devuelve un Cipher objeto que implementa la transformación especificada.

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 update operación o doFinal , dada la longitud inputLen de entrada (en bytes).

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 self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

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 self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a