Idioma

Cipher Classe

Definição

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

[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
Herança
Derivado
Atributos

Comentários

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia. Ele forma o núcleo da estrutura da JCE (Extensão Criptográfica) Java.

Para criar um objeto Cipher, o aplicativo chama o método cipher getInstance e passa o nome da transformação solicitada para ele. Opcionalmente, o nome de um provedor pode ser especificado.

Uma transformação é uma cadeia de caracteres que descreve a operação (ou conjunto de operações) a ser executada na entrada fornecida, para produzir alguma saída. Uma transformação sempre inclui o nome de um algoritmo criptográfico (por exemplo, DES) e pode ser seguida por um modo de comentários e esquema de preenchimento.

Uma transformação é do formulário:

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

<li>"algorithm" </ul>

(no último caso, valores padrão específicos do provedor para o modo e o esquema de preenchimento são usados). Por exemplo, o seguinte é uma transformação válida:

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

Usar modos como CFB e OFBbloquear criptografias pode criptografar dados em unidades menores do que o tamanho real do bloco da criptografia. Ao solicitar esse modo, opcionalmente, você pode especificar o número de bits a serem processados por vez acrescentando esse número ao nome do modo, conforme mostrado nas transformações "DES/CFB8/NoPadding" e "DES/OFB32/PKCS5Padding". Se nenhum número desse tipo for especificado, um padrão específico do provedor será usado. (Por exemplo, o provedor SunJCE usa um padrão de 64 bits para DES.) Assim, as criptografias de bloco podem ser transformadas em criptografias de fluxo orientadas a bytes usando um modo de 8 bits, como CFB8 ou OFB8.

Modos como a Criptografia Autenticada com Dados Associados (AEAD) fornecem garantias de autenticidade para dados confidenciais e AAD (Dados Associados Adicionais) que não são criptografados. (Consulte o RFC 5116 para obter mais informações sobre algoritmos AEAD e AEAD, como GCM/CCM.) Dados confidenciais e do AAD podem ser usados ao calcular a marca de autenticação (semelhante a um Mac). Essa marca é acrescentada ao texto criptografado durante a criptografia e é verificada na descriptografia.

Os modos AEAD, como GCM/CCM, executam todos os cálculos de autenticidade do AAD antes de iniciar os cálculos de autenticidade do texto criptografado. Para evitar implementações que precisem armazenar o texto criptografado em buffer internamente, todos os dados do AAD devem ser fornecidos para implementações de GCM/CCM (por meio dos updateAAD métodos) <b>antes</b> de processamento do ciphertext (por meio dos update métodos).doFinal

Observe que o modo GCM tem um requisito de exclusividade em IVs usados na criptografia com uma determinada chave. Quando as IVs são repetidas para criptografia GCM, esses usos estão sujeitos a ataques de falsificação. Assim, após cada operação de criptografia usando o modo GCM, os chamadores devem inicializar novamente os objetos de criptografia com parâmetros GCM que têm um 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);
                ...

O Android fornece as seguintes Cipher transformações: <tabela><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">CFB</span><br><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><><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">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><></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=". espaço em branco: 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></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_256></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></td td><><span style="white-space: nowrap">26+</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">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><><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 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">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 com 20 rounds, nonce de 96 bits e contador de 32 bits, conforme descrito no 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">CFB</span><br><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><><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">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">CFB</span><br><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><><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">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-space: nowrap">NONE</span></td td><><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">OAEPPadding</span><br><span style=" espaço em branco: 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=" espaço em branco: 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=" espaço em branco: nowrap">23+</span></td td><></td></tr></tbody></table>

Essas transformações são descritas na seção Codificar da documentação do nome do algoritmo padrão da arquitetura de criptografia Java.

Adicionado em 1.4.

Documentação Java para javax.crypto.Cipher.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
Cipher(CipherSpi, Provider, String)

Cria um objeto Cipher.

Cipher(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime.

Campos

Nome Description
DecryptMode
Obsoleto.

Constante usada para inicializar a criptografia para o modo de descriptografia.

EncryptMode
Obsoleto.

Constante usada para inicializar a criptografia no modo de criptografia.

PrivateKey
Obsoleto.

Constante usada para indicar que a chave desembrulhada to-beé uma "chave privada".

PublicKey
Obsoleto.

Constante usada para indicar que a chave desembrulhada to-beé uma "chave pública".

SecretKey
Obsoleto.

Constante usada para indicar que a chave to-be-unwrapped é uma "chave secreta".

UnwrapMode
Obsoleto.

Constante usada para inicializar a criptografia para o modo de desembrulhamento de chave.

WrapMode
Obsoleto.

Constante usada para inicializar a criptografia no modo de encapsulamento de chave.

Propriedades

Nome Description
Algorithm

Retorna o nome do algoritmo desse Cipher objeto.

BlockSize

Retorna o tamanho do bloco (em bytes).

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
ExemptionMechanism

Retorna o objeto de mecanismo de isenção usado com essa criptografia.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
JniPeerMembers

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

Parameters

Retorna os parâmetros usados com essa criptografia.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
Provider

Retorna o provedor desse Cipher objeto.

ThresholdClass

Essa API é compatível com a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Essa API é compatível com a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

Nome Description
Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
DoFinal()

Conclui uma operação de criptografia ou descriptografia de várias partes, dependendo de como essa criptografia foi inicializada.

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

Criptografa ou descriptografa dados em uma operação de única parte ou conclui uma operação de várias partes.

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

Criptografa ou descriptografa dados em uma operação de única parte ou conclui uma operação de várias partes.

DoFinal(Byte[], Int32, Int32)

Criptografa ou descriptografa dados em uma operação de única parte ou conclui uma operação de várias partes.

DoFinal(Byte[], Int32)

Conclui uma operação de criptografia ou descriptografia de várias partes, dependendo de como essa criptografia foi inicializada.

DoFinal(Byte[])

Criptografa ou descriptografa dados em uma operação de única parte ou conclui uma operação de várias partes.

DoFinal(ByteBuffer, ByteBuffer)

Criptografa ou descriptografa dados em uma operação de única parte ou conclui uma operação de várias partes.

Equals(Object)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetInstance(String, Provider)

Retorna um Cipher objeto que implementa a transformação especificada.

GetInstance(String, String)

Retorna um Cipher objeto que implementa a transformação especificada.

GetInstance(String)

Retorna um Cipher objeto que implementa a transformação especificada.

GetIV()

Retorna o iv (vetor de inicialização) em um novo buffer.

GetMaxAllowedKeyLength(String)

Retorna o comprimento máximo da chave para a transformação especificada de acordo com os arquivos de política de jurisdição do JCE instalados.

GetMaxAllowedParameterSpec(String)

Retorna um objeto AlgorithmParameterSpec que contém o valor máximo do parâmetro de criptografia de acordo com o arquivo de política de jurisdição.

GetOutputSize(Int32)

Retorna o comprimento em bytes que um buffer de saída precisaria ser para manter o resultado da próxima update ou doFinal operação, considerando o comprimento inputLen de entrada (em bytes).

Init(CipherMode, Certificate, SecureRandom)

Inicializa essa criptografia com a chave pública do certificado especificado e uma fonte de aleatoriedade.

Init(CipherMode, Certificate)

Inicializa essa criptografia com a chave pública do certificado especificado.

Init(CipherMode, IKey, AlgorithmParameters, SecureRandom)

Inicializa essa criptografia com uma chave, um conjunto de parâmetros de algoritmo e uma fonte de aleatoriedade.

Init(CipherMode, IKey, AlgorithmParameters)

Inicializa essa criptografia com uma chave e um conjunto de parâmetros de algoritmo.

Init(CipherMode, IKey, IAlgorithmParameterSpec, SecureRandom)

Inicializa essa criptografia com uma chave, um conjunto de parâmetros de algoritmo e uma fonte de aleatoriedade.

Init(CipherMode, IKey, IAlgorithmParameterSpec)

Inicializa essa criptografia com uma chave e um conjunto de parâmetros de algoritmo.

Init(CipherMode, IKey, SecureRandom)

Inicializa essa criptografia com uma chave e uma fonte de aleatoriedade.

Init(CipherMode, IKey)

Inicializa essa codificação com uma chave.

JavaFinalize()
Obsoleto.

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor desse objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Unwrap(Byte[], String, KeyType)

Desembrulhar uma chave encapsulada anteriormente.

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

Continua uma operação de criptografia ou descriptografia de várias partes (dependendo de como essa criptografia foi inicializada), processando outra parte de dados.

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

Continua uma operação de criptografia ou descriptografia de várias partes (dependendo de como essa criptografia foi inicializada), processando outra parte de dados.

Update(Byte[], Int32, Int32)

Continua uma operação de criptografia ou descriptografia de várias partes (dependendo de como essa criptografia foi inicializada), processando outra parte de dados.

Update(Byte[])

Continua uma operação de criptografia ou descriptografia de várias partes (dependendo de como essa criptografia foi inicializada), processando outra parte de dados.

Update(ByteBuffer, ByteBuffer)

Continua uma operação de criptografia ou descriptografia de várias partes (dependendo de como essa criptografia foi inicializada), processando outra parte de dados.

UpdateAAD(Byte[], Int32, Int32)

Continua uma atualização de várias partes do AAD (Dados de Autenticação Adicionais), usando um subconjunto do buffer fornecido.

UpdateAAD(Byte[])

Continua uma atualização de várias partes do AAD (Dados adicionais de autenticação).

UpdateAAD(ByteBuffer)

Continua uma atualização de várias partes do AAD (Dados adicionais de autenticação).

Wait()

Faz com que o thread atual aguarde até que seja despertado, normalmente sendo <notificado></em> ou <em>interrompido</em>.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que seja ativado, normalmente sendo <notificado></em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que seja ativado, normalmente sendo <notificado></em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wrap(IKey)

Encapsular uma chave.

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada pelo tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Essa classe fornece a funcionalidade de uma criptografia codificada para criptografia e descriptografia.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a