Cipher Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
| BlockSize |
Retorna o tamanho do bloco (em bytes). |
| Class |
Retorna a classe de tempo de execução deste |
| 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 |
| 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 |
| GetInstance(String, String) |
Retorna um |
| GetInstance(String) |
Retorna um |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| 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 |