Langue

Cipher Classe

Définition

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

[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
Héritage
Dérivé
Attributs

Remarques

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement. Il forme le cœur de l’infrastructure JCE (Java Cryptographic Extension).

Pour créer un objet de chiffrement, l’application appelle la méthode du getInstance chiffrement et lui transmet le nom de la transformation demandée. Si vous le souhaitez, le nom d’un fournisseur peut être spécifié.

Une transformation est une chaîne qui décrit l’opération (ou l’ensemble d’opérations) à effectuer sur l’entrée donnée, pour produire une sortie. Une transformation inclut toujours le nom d’un algorithme de chiffrement (par exemple , DES) et peut être suivie d’un mode de commentaires et d’un schéma de remplissage.

Une transformation est de la forme :

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

<li>"algorithm » </ul>

(dans ce dernier cas, les valeurs par défaut spécifiques au fournisseur pour le mode et le schéma de remplissage sont utilisées). Par exemple, voici une transformation valide :

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

L’utilisation de modes tels que CFB et OFB, les chiffrements de blocs peuvent chiffrer des données en unités inférieures à la taille réelle du chiffrement. Lors de la demande d’un tel mode, vous pouvez éventuellement spécifier le nombre de bits à traiter à la fois en ajoutant ce nombre au nom du mode, comme indiqué dans les transformations «DES/CFB8/NoPadding » et «DES/OFB32/PKCS5Padding ». Si aucun tel nombre n’est spécifié, une valeur par défaut spécifique au fournisseur est utilisée. (Par exemple, le fournisseur SunJCE utilise une valeur par défaut de 64 bits pour DES.) Par conséquent, les chiffrements de blocs peuvent être transformés en chiffrements de flux orientés octets à l’aide d’un mode 8 bits tel que CFB8 ou OFB8.

Les modes tels que le chiffrement authentifié avec les données associées (AEAD) fournissent des garanties d’authenticité pour les données confidentielles et les données associées supplémentaires (AAD) qui ne sont pas chiffrées. (Consultez RFC 5116 pour plus d’informations sur les algorithmes AEAD et AEAD tels que GCM/CCM.) Les données confidentielles et AAD peuvent être utilisées lors du calcul de la balise d’authentification (similaire à un Mac). Cette balise est ajoutée au texte chiffré pendant le chiffrement et est vérifiée sur le déchiffrement.

Les modes AEAD tels que GCM/CCM effectuent tous les calculs d’authenticité AAD avant de commencer les calculs d’authenticité de texte chiffré. Pour éviter d’avoir à mettre en mémoire tampon en interne le texte chiffré, toutes les données AAD doivent être fournies aux implémentations GCM/CCM (via les updateAAD méthodes) <b>avant</b> que le texte chiffré est traité (via les méthodes et update les doFinal méthodes).

Notez que le mode GCM a une exigence d’unicité sur les IV utilisées dans le chiffrement avec une clé donnée. Lorsque les IV sont répétées pour le chiffrement GCM, ces utilisations sont soumises à des attaques de falsification. Par conséquent, après chaque opération de chiffrement utilisant le mode GCM, les appelants doivent réinitialiser les objets de chiffrement avec des paramètres GCM qui ont une valeur IV différente.

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 fournit les transformations suivantes : tableCipherthead<>tr<>th<Algorithm>/<><th th Modes>/th th<><Paddings>/th<><Supported API Levels>/th th Notes</th><>/<>thead<>tbody<>tr<><> td rowspan="3"span style="<white-space : nowrap">AES</span/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">CT SS</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><>/tr tr<><><td span style="white-space : nowrap"GCM-SIV></span>/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_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></><tr><><><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 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></tr tr><><>td rowspan="3"<span style="white-space : nowrap">AES_256</span></td 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><><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 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></tr tr><tr><rowspan="2"><span style="white-space : nowrap">ARC4</span></td><><span style="white-space : nowrap">ECB</span></td><><span style="white-space="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></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 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><><span style="white-space : nowrap>"28+</span></td td span><td>ChaCha avec 20 rounds, nonce 96 bits et compteur 32 bits, comme décrit dans 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 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><span style="white-space : nowrap"><>1+</><span></td 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 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><><></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 espace : nowrap"NONE>/span/td td<><>span< style="white-space : nowrap"><NoPadding>/span br<span><style="><white-space : nowrap">OAEPPadding</span><br><span style= » espace blanc : nowrap">PKCS1Padding</span></td td><><span style="white-space : nowrap">1+</span/td><>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= » espace blanc : nowrap"10+/span>/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= »<>< espace blanc : nowrap"23+/span>/td/td/td<><><></tr/tbody><></table><>

Ces transformations sont décrites dans la section Chiffrement de la documentation relative au nom d’algorithme standard de l’architecture de chiffrement Java.

Ajouté dans la version 1.4.

Documentation Java pour javax.crypto.Cipher.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Constructeurs

Nom Description
Cipher(CipherSpi, Provider, String)

Crée un objet de chiffrement.

Cipher(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Champs

Nom Description
DecryptMode
Obsolète.

Constante utilisée pour initialiser le chiffrement en mode déchiffrement.

EncryptMode
Obsolète.

Constante utilisée pour initialiser le chiffrement en mode de chiffrement.

PrivateKey
Obsolète.

Constante utilisée pour indiquer que la clé to-be-unwrapped est une « clé privée ».

PublicKey
Obsolète.

Constante utilisée pour indiquer que la clé to-be-unwrapped est une « clé publique ».

SecretKey
Obsolète.

Constante utilisée pour indiquer que la clé to-be-unwrapped est une « clé secrète ».

UnwrapMode
Obsolète.

Constante utilisée pour initialiser le chiffrement en mode key-unwrapping.

WrapMode
Obsolète.

Constante utilisée pour initialiser le chiffrement en mode d’habillage de clé.

Propriétés

Nom Description
Algorithm

Retourne le nom de l’algorithme de cet Cipher objet.

BlockSize

Retourne la taille du bloc (en octets).

Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
ExemptionMechanism

Retourne l’objet de mécanisme d’exemption utilisé avec ce chiffrement.

Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
JniPeerMembers

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

Parameters

Retourne les paramètres utilisés avec ce chiffrement.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
Provider

Retourne le fournisseur de cet Cipher objet.

ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

Nom Description
Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
DoFinal()

Termine une opération de chiffrement ou de déchiffrement en plusieurs parties, selon la façon dont ce chiffrement a été initialisé.

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

Chiffre ou déchiffre les données dans une opération en une seule partie ou termine une opération en plusieurs parties.

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

Chiffre ou déchiffre les données dans une opération en une seule partie ou termine une opération en plusieurs parties.

DoFinal(Byte[], Int32, Int32)

Chiffre ou déchiffre les données dans une opération en une seule partie ou termine une opération en plusieurs parties.

DoFinal(Byte[], Int32)

Termine une opération de chiffrement ou de déchiffrement en plusieurs parties, selon la façon dont ce chiffrement a été initialisé.

DoFinal(Byte[])

Chiffre ou déchiffre les données dans une opération en une seule partie ou termine une opération en plusieurs parties.

DoFinal(ByteBuffer, ByteBuffer)

Chiffre ou déchiffre les données dans une opération en une seule partie ou termine une opération en plusieurs parties.

Equals(Object)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
GetHashCode()

Retourne une valeur de code de hachage pour l’objet.

(Hérité de Object)
GetInstance(String, Provider)

Retourne un Cipher objet qui implémente la transformation spécifiée.

GetInstance(String, String)

Retourne un Cipher objet qui implémente la transformation spécifiée.

GetInstance(String)

Retourne un Cipher objet qui implémente la transformation spécifiée.

GetIV()

Retourne le vecteur d’initialisation (IV) dans une nouvelle mémoire tampon.

GetMaxAllowedKeyLength(String)

Retourne la longueur maximale de la clé pour la transformation spécifiée en fonction des fichiers de stratégie de compétence JCE installés.

GetMaxAllowedParameterSpec(String)

Retourne un objet AlgorithmParameterSpec qui contient la valeur maximale du paramètre de chiffrement en fonction du fichier de stratégie de compétence.

GetOutputSize(Int32)

Retourne la longueur en octets qu’une mémoire tampon de sortie doit être pour contenir le résultat de la prochaine update ou doFinal opération, en fonction de la longueur inputLen d’entrée (en octets).

Init(CipherMode, Certificate, SecureRandom)

Initialise ce chiffrement avec la clé publique à partir du certificat donné et une source de randomité.

Init(CipherMode, Certificate)

Initialise ce chiffrement avec la clé publique à partir du certificat donné.

Init(CipherMode, IKey, AlgorithmParameters, SecureRandom)

Initialise ce chiffrement avec une clé, un ensemble de paramètres d’algorithme et une source de randomité.

Init(CipherMode, IKey, AlgorithmParameters)

Initialise ce chiffrement avec une clé et un ensemble de paramètres d’algorithme.

Init(CipherMode, IKey, IAlgorithmParameterSpec, SecureRandom)

Initialise ce chiffrement avec une clé, un ensemble de paramètres d’algorithme et une source de randomité.

Init(CipherMode, IKey, IAlgorithmParameterSpec)

Initialise ce chiffrement avec une clé et un ensemble de paramètres d’algorithme.

Init(CipherMode, IKey, SecureRandom)

Initialise ce chiffrement avec une clé et une source de randomité.

Init(CipherMode, IKey)

Initialise ce chiffrement avec une clé.

JavaFinalize()
Obsolète.

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation sous forme de chaîne de l’objet.

(Hérité de Object)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Unwrap(Byte[], String, KeyType)

Décompressez une clé encapsulée précédemment.

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

Poursuit une opération de chiffrement ou de déchiffrement à plusieurs parties (selon la façon dont ce chiffrement a été initialisé), en traitant une autre partie de données.

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

Poursuit une opération de chiffrement ou de déchiffrement à plusieurs parties (selon la façon dont ce chiffrement a été initialisé), en traitant une autre partie de données.

Update(Byte[], Int32, Int32)

Poursuit une opération de chiffrement ou de déchiffrement à plusieurs parties (selon la façon dont ce chiffrement a été initialisé), en traitant une autre partie de données.

Update(Byte[])

Poursuit une opération de chiffrement ou de déchiffrement à plusieurs parties (selon la façon dont ce chiffrement a été initialisé), en traitant une autre partie de données.

Update(ByteBuffer, ByteBuffer)

Poursuit une opération de chiffrement ou de déchiffrement à plusieurs parties (selon la façon dont ce chiffrement a été initialisé), en traitant une autre partie de données.

UpdateAAD(Byte[], Int32, Int32)

Poursuit une mise à jour en plusieurs parties des données d’authentification supplémentaires (AAD), à l’aide d’un sous-ensemble de la mémoire tampon fournie.

UpdateAAD(Byte[])

Poursuit une mise à jour multiparte des données d’authentification supplémentaires (AAD).

UpdateAAD(ByteBuffer)

Poursuit une mise à jour multiparte des données d’authentification supplémentaires (AAD).

Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wrap(IKey)

Encapsulez une clé.

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

(Hérité de JavaObject)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Cette classe fournit les fonctionnalités d’un chiffrement de chiffrement pour le chiffrement et le déchiffrement.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à