Share via


KeyGenerator Class

Definition

This class provides the functionality of a secret (symmetric) key generator.

[Android.Runtime.Register("javax/crypto/KeyGenerator", DoNotGenerateAcw=true)]
public class KeyGenerator : Java.Lang.Object
[<Android.Runtime.Register("javax/crypto/KeyGenerator", DoNotGenerateAcw=true)>]
type KeyGenerator = class
    inherit Object
Inheritance
KeyGenerator
Attributes

Remarks

This class provides the functionality of a secret (symmetric) key generator.

Key generators are constructed using one of the getInstance class methods of this class.

KeyGenerator objects are reusable, i.e., after a key has been generated, the same KeyGenerator object can be re-used to generate further keys.

There are two ways to generate a key: in an algorithm-independent manner, and in an algorithm-specific manner. The only difference between the two is the initialization of the object:

<ul> <li><b>Algorithm-Independent Initialization</b>

All key generators share the concepts of a keysize and a source of randomness. There is an #init(int, java.security.SecureRandom) init method in this KeyGenerator class that takes these two universally shared types of arguments. There is also one that takes just a keysize argument, and uses the SecureRandom implementation of the highest-priority installed provider as the source of randomness (or a system-provided source of randomness if none of the installed providers supply a SecureRandom implementation), and one that takes just a source of randomness.

Since no other parameters are specified when you call the above algorithm-independent init methods, it is up to the provider what to do about the algorithm-specific parameters (if any) to be associated with each of the keys.

<li><b>Algorithm-Specific Initialization</b>

For situations where a set of algorithm-specific parameters already exists, there are two #init(java.security.spec.AlgorithmParameterSpec) init methods that have an AlgorithmParameterSpec argument. One also has a SecureRandom argument, while the other uses the SecureRandom implementation of the highest-priority installed provider as the source of randomness (or a system-provided source of randomness if none of the installed providers supply a SecureRandom implementation). </ul>

In case the client does not explicitly initialize the KeyGenerator (via a call to an init method), each provider must supply (and document) a default initialization.

Android provides the following KeyGenerator algorithms: <table> <thead> <tr> <th>Algorithm</th> <th>Supported API Levels</th> </tr> </thead> <tbody> <tr> <td>AES</td> <td>1+</td> </tr> <tr class="deprecated"> <td>AESWRAP</td> <td>1-8</td> </tr> <tr> <td>ARC4</td> <td>14+</td> </tr> <tr> <td>BLOWFISH</td> <td>10+</td> </tr> <tr> <td>ChaCha20</td> <td>28+</td> </tr> <tr> <td>DES</td> <td>1+</td> </tr> <tr> <td>DESede</td> <td>1+</td> </tr> <tr class="deprecated"> <td>DESedeWRAP</td> <td>1-8</td> </tr> <tr> <td>HmacMD5</td> <td>1+</td> </tr> <tr> <td>HmacSHA1</td> <td>11+</td> </tr> <tr> <td>HmacSHA224</td> <td>1-8,22+</td> </tr> <tr> <td>HmacSHA256</td> <td>1+</td> </tr> <tr> <td>HmacSHA384</td> <td>1+</td> </tr> <tr> <td>HmacSHA512</td> <td>1+</td> </tr> <tr class="deprecated"> <td>RC4</td> <td>10-13</td> </tr> </tbody> </table>

These algorithms are described in the KeyGenerator section of the Java Cryptography Architecture Standard Algorithm Name Documentation.

Added in 1.4.

Java documentation for javax.crypto.KeyGenerator.

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Constructors

KeyGenerator(IntPtr, JniHandleOwnership)

A constructor used when creating managed representations of JNI objects; called by the runtime.

KeyGenerator(KeyGeneratorSpi, Provider, String)

Creates a KeyGenerator object.

Properties

Algorithm

Returns the algorithm name of this KeyGenerator object.

Class

Returns the runtime class of this Object.

(Inherited from Object)
Handle

The handle to the underlying Android instance.

(Inherited from Object)
JniIdentityHashCode (Inherited from Object)
JniPeerMembers
PeerReference (Inherited from Object)
Provider

Returns the provider of this KeyGenerator object.

ThresholdClass

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

ThresholdType

This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.

Methods

Clone()

Creates and returns a copy of this object.

(Inherited from Object)
Dispose() (Inherited from Object)
Dispose(Boolean) (Inherited from Object)
Equals(Object)

Indicates whether some other object is "equal to" this one.

(Inherited from Object)
GenerateKey()

Generates a secret key.

GetHashCode()

Returns a hash code value for the object.

(Inherited from Object)
GetInstance(String, Provider)

Returns a KeyGenerator object that generates secret keys for the specified algorithm.

GetInstance(String, String)

Returns a KeyGenerator object that generates secret keys for the specified algorithm.

GetInstance(String)

Returns a KeyGenerator object that generates secret keys for the specified algorithm.

Init(IAlgorithmParameterSpec, SecureRandom)

Initializes this key generator with the specified parameter set and a user-provided source of randomness.

Init(IAlgorithmParameterSpec)

Initializes this key generator with the specified parameter set.

Init(Int32, SecureRandom)

Initializes this key generator for a certain keysize, using a user-provided source of randomness.

Init(Int32)

Initializes this key generator for a certain keysize.

Init(SecureRandom)

Initializes this key generator.

JavaFinalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

(Inherited from Object)
Notify()

Wakes up a single thread that is waiting on this object's monitor.

(Inherited from Object)
NotifyAll()

Wakes up all threads that are waiting on this object's monitor.

(Inherited from Object)
SetHandle(IntPtr, JniHandleOwnership)

Sets the Handle property.

(Inherited from Object)
ToArray<T>() (Inherited from Object)
ToString()

Returns a string representation of the object.

(Inherited from Object)
UnregisterFromRuntime() (Inherited from Object)
Wait()

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>.

(Inherited from Object)
Wait(Int64, Int32)

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed.

(Inherited from Object)
Wait(Int64)

Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed.

(Inherited from Object)

Explicit Interface Implementations

IJavaPeerable.Disposed() (Inherited from Object)
IJavaPeerable.DisposeUnlessReferenced() (Inherited from Object)
IJavaPeerable.Finalized() (Inherited from Object)
IJavaPeerable.JniManagedPeerState (Inherited from Object)
IJavaPeerable.SetJniIdentityHashCode(Int32) (Inherited from Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) (Inherited from Object)
IJavaPeerable.SetPeerReference(JniObjectReference) (Inherited from Object)

Extension Methods

JavaCast<TResult>(IJavaObject)

Performs an Android runtime-checked type conversion.

JavaCast<TResult>(IJavaObject)
GetJniTypeName(IJavaPeerable)

Applies to