Language

Cipher クラス

定義

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

[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
継承
派生
属性

注釈

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。 これは、Java Cryptographic Extension (JCE) フレームワークのコアを形成します。

暗号オブジェクトを作成するために、アプリケーションは暗号の getInstance メソッドを呼び出し、要求された 変換 の名前をそれに渡します。 必要に応じて、プロバイダーの名前を指定できます。

変換とは、特定の入力に対して実行される操作 (または一連の操作) を記述し、出力を生成する文字列です。 変換には常に暗号化アルゴリズムの名前 ( DES など) が含まれており、その後にフィードバック モードと埋め込みスキームが続く場合があります。

変換の形式は次のとおりです。

<ul><li>"algorithm/mode/padding" または

<li>"algorithm" </ul>

(後者の場合、モードとパディング スキームのプロバイダー固有の既定値が使用されます)。 たとえば、有効な変換を次に示します。

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

ブロック暗号は、 CFB や OFBなどのモードを使用して、暗号の実際のブロック サイズよりも小さい単位でデータを暗号化できます。 このようなモードを要求する場合は、必要に応じて、"DES/CFB8/NoPadding" 変換と "DES/OFB32/PKCS5Padding" 変換に示すように、モード名にこの数を追加して、一度に処理するビット数を指定できます。 このような番号が指定されていない場合は、プロバイダー固有の既定値が使用されます。 (たとえば、SunJCE プロバイダーは DES に既定値の 64 ビットを使用します)。したがって、ブロック暗号は、CFB8 や OFB8 などの 8 ビット モードを使用してバイト指向ストリーム暗号に変換できます。

関連付けられたデータを使用した認証された暗号化 (AEAD) などのモードでは、機密データと暗号化されていない追加の関連データ (AAD) の両方に対して信頼性の保証が提供されます。 (AEAD および GCM/CCM などの AEAD アルゴリズムの詳細については、 RFC 5116 を参照してください)。( Macと同様に) 認証タグを計算するときに、機密データと AAD データの両方を使用できます。 このタグは、暗号化中に暗号テキストに追加され、暗号化解除時に検証されます。

GCM/CCM などの AEAD モードでは、暗号テキストの真正性の計算を開始する前にすべての AAD 信頼性計算が実行されます。 暗号化テキストを内部的にバッファーする実装を回避するには、( updateAAD メソッドを使用して) すべての AAD データを GCM/CCM 実装に提供する必要があります <b>before</b> 暗号テキストは ( update メソッドと doFinal メソッドを使用して) 処理されます。

GCM モードには、特定のキーを使用した暗号化で使用される IV に一意性の要件があることに注意してください。 GCM 暗号化のために IV が繰り返される場合、このような使用は偽造攻撃の対象となります。 したがって、GCM モードを使用する各暗号化操作の後、呼び出し元は異なる IV 値を持つ GCM パラメーターを使用して暗号オブジェクトを再初期化する必要があります。

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 Cipher では、<table><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><spanstyle="white-space: nowrap">CBC</span><br><span style="white-space: nowrap">CFB</span><><brspan 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/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><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><><span style="white-space: nowrap">26+</span></td><td></td></tr><trtr><td><span style="white-space: nowrap">GCM-SIV</span></td><td><span style="white-space: nowrap">NoPadding</span></td><td><span style="white--td space: nowrap">30+</span></td><td></td></tr><tr><td rowspan="3"><span style="white-space: nowrap">AES_256</span></td><ttd><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><>pan style="white-space: nowrap"PKCS5Padding</span></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: 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></tr><tr><td rowspan="2"><sspan 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/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":nowrap" >NoPadding</span><br><span style="white-space: nowrap">PKCS5Padding</span></td><td><span style="white-space: nowrap">10+</span></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></tdrfc 7539.> で説明されているように、<>td<ChaCha と 20 ラウンド、96 ビット nonce、および 32 ビット カウンター/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><tdttd></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></span/td><><span style="white-space: nowrap">ISO10126Padding</span><br><span style="white-space: nowrap">NoPaddding</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 no:wrap">NONE</span></td><td><span style="white-space: nowrap">NoPadding</span><br><span style="white-space: nowrap">OAEPPadding</span><br><span style="空白: nowrap">PKCS1Padding</span></td><td><span style="white-space: nowrap">1+</span></td><td></td></tr><tr><td><spanpan style="white-space: nowrap">OAEPwithSHA-1andMGF1Padding</span><br><span style="white-space: nowrap">OAEPwithSHA-256andMGF1Padding</span></td><td><span style="空白: 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="空白: nowrap">23+</span></td><td></td></tr></tbody></table>

これらの変換については、Java暗号化アーキテクチャの標準アルゴリズム名に関するドキュメントの暗号セクションで説明されています。

1.4 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
Cipher(CipherSpi, Provider, String)

暗号オブジェクトを作成します。

Cipher(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

フィールド

名前 説明
DecryptMode
古い.

暗号を暗号化解除モードに初期化するために使用される定数。

EncryptMode
古い.

暗号を暗号化モードに初期化するために使用される定数。

PrivateKey
古い.

to-be-unwrapped キーが "秘密キー" であることを示すために使用される定数。

PublicKey
古い.

to-be-unwrapped キーが "公開キー" であることを示すために使用される定数。

SecretKey
古い.

to-be-unwrapped キーが "秘密鍵" であることを示すために使用される定数。

UnwrapMode
古い.

キーラップ解除モードに暗号を初期化するために使用される定数。

WrapMode
古い.

キー ラッピング モードへの暗号の初期化に使用される定数。

プロパティ

名前 説明
Algorithm

この Cipher オブジェクトのアルゴリズム名を返します。

BlockSize

ブロック サイズ (バイト単位) を返します。

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
ExemptionMechanism

この暗号で使用される除外メカニズム オブジェクトを返します。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
JniPeerMembers

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

Parameters

この暗号で使用されるパラメーターを返します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
Provider

この Cipher オブジェクトのプロバイダーを返します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
DoFinal()

この暗号の初期化方法に応じて、複数部構成の暗号化または暗号化解除操作を完了します。

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

単一部分の操作でデータを暗号化または復号化するか、複数パート操作を完了します。

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

単一部分の操作でデータを暗号化または復号化するか、複数パート操作を完了します。

DoFinal(Byte[], Int32, Int32)

単一部分の操作でデータを暗号化または復号化するか、複数パート操作を完了します。

DoFinal(Byte[], Int32)

この暗号の初期化方法に応じて、複数部構成の暗号化または暗号化解除操作を完了します。

DoFinal(Byte[])

単一部分の操作でデータを暗号化または復号化するか、複数パート操作を完了します。

DoFinal(ByteBuffer, ByteBuffer)

単一部分の操作でデータを暗号化または復号化するか、複数パート操作を完了します。

Equals(Object)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetInstance(String, Provider)

指定した変換を実装する Cipher オブジェクトを返します。

GetInstance(String, String)

指定した変換を実装する Cipher オブジェクトを返します。

GetInstance(String)

指定した変換を実装する Cipher オブジェクトを返します。

GetIV()

新しいバッファー内の初期化ベクトル (IV) を返します。

GetMaxAllowedKeyLength(String)

インストールされている JCE 管轄ポリシー ファイルに従って、指定した変換の最大キー長を返します。

GetMaxAllowedParameterSpec(String)

管轄ポリシー ファイルに従った最大暗号パラメーター値を含む AlgorithmParameterSpec オブジェクトを返します。

GetOutputSize(Int32)

次の update または doFinal 操作の結果を保持するために出力バッファーが必要とする長さをバイト単位で返します(入力長 inputLen (バイト単位)。

Init(CipherMode, Certificate, SecureRandom)

指定された証明書の公開キーとランダム性のソースを使用して、この暗号を初期化します。

Init(CipherMode, Certificate)

指定された証明書の公開キーを使用して、この暗号を初期化します。

Init(CipherMode, IKey, AlgorithmParameters, SecureRandom)

キー、アルゴリズム パラメーターのセット、およびランダム性のソースを使用して、この暗号を初期化します。

Init(CipherMode, IKey, AlgorithmParameters)

キーと一連のアルゴリズム パラメーターを使用して、この暗号を初期化します。

Init(CipherMode, IKey, IAlgorithmParameterSpec, SecureRandom)

キー、アルゴリズム パラメーターのセット、およびランダム性のソースを使用して、この暗号を初期化します。

Init(CipherMode, IKey, IAlgorithmParameterSpec)

キーと一連のアルゴリズム パラメーターを使用して、この暗号を初期化します。

Init(CipherMode, IKey, SecureRandom)

キーとランダム性のソースを使用して、この暗号を初期化します。

Init(CipherMode, IKey)

キーを使用してこの暗号を初期化します。

JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Unwrap(Byte[], String, KeyType)

以前にラップされたキーのラップを解除します。

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

(この暗号の初期化方法に応じて) 複数部分の暗号化または復号化操作を続行し、別のデータ 部分を処理します。

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

(この暗号の初期化方法に応じて) 複数部分の暗号化または復号化操作を続行し、別のデータ 部分を処理します。

Update(Byte[], Int32, Int32)

(この暗号の初期化方法に応じて) 複数部分の暗号化または復号化操作を続行し、別のデータ 部分を処理します。

Update(Byte[])

(この暗号の初期化方法に応じて) 複数部分の暗号化または復号化操作を続行し、別のデータ 部分を処理します。

Update(ByteBuffer, ByteBuffer)

(この暗号の初期化方法に応じて) 複数部分の暗号化または復号化操作を続行し、別のデータ 部分を処理します。

UpdateAAD(Byte[], Int32, Int32)

指定されたバッファーのサブセットを使用して、追加認証データ (AAD) のマルチパート更新を続行します。

UpdateAAD(Byte[])

追加認証データ (AAD) のマルチパート更新を続行します。

UpdateAAD(ByteBuffer)

追加認証データ (AAD) のマルチパート更新を続行します。

Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wrap(IKey)

キーをラップします。

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
IJavaPeerable.Finalized()

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

このクラスは、暗号化と暗号化解除のための暗号暗号の機能を提供します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象