Encrypt

Encrypt["password",expr]

指定されたパスワードを使って expr を暗号化し,暗号化オブジェクトを与える.

Encrypt[keyspec,expr]

暗号鍵の指定 keyspec を使って expr を暗号化する.

Encrypt[expr]

expr を暗号化するためのパスワードをインタラクティブにリクエストする.

詳細とオプション

  • Encryptは,Decryptを使った復号化に適したEncryptedObject[]を与える.
  • Encrypt[key,"string"]は,UTF-8で符号化された文字列の暗号化されたバージョンを含むEncryptedObjectを与える.
  • Encrypt[key,ByteArray[]]は,ByteArrayオブジェクト中の生のバイトの暗号化されたバージョンを含むEncryptedObjectを与える.
  • Encrypt[key,expr]は,一般的な式についてはCompress[expr]を暗号化したものを含むEncryptedObjectを与える.
  • 暗号化の方法は key の暗号とパラメータに基づいている.詳細についてはGenerateSymmetricKeyおよびGenerateAsymmetricKeyPairを参照のこと.
  • Encrypt[expr]は,ノートブックインターフェースではダイアログボックスを,テキスト型のインターフェースではテキストプロンプトを生成する.
  • Encryptは次のオプションを取る.
  • Method Automatic暗号化法の詳細
  • Methodassoc の設定のとき,連想 assoc は使用する暗号化法の詳細を与える.
  • 連想 assoc には次の要素を与えることができる.
  • "Padding"Automatic充填モード
    "InitializationVector"Automaticブロック暗号のための初期化ベクトル
    "BlockMode""CBC"ブロック暗号モード ("ECB","CBC", "OFB", "CFB", "CTR")
  • 連想中 assoc"Padding"要素は,不完全な入力を充填する方法を指定する.
  • 対称キーによる暗号化はAutomaticNoneの充填法をサポートする.
  • 公開鍵による暗号化と秘密鍵による復号化は,"PKCS1""OAEP"Noneの充填法をサポートする.
  • 秘密鍵による暗号化と公開鍵による復号化は,"PKCS1"Noneの充填法をサポートする.
  • 非対称暗号化にはデフォルトでは"PKCS1"充填法が使われる.
  • RC4とRSAを除く暗号化はどれも,ブロックモードの"ECB""CBC""CFB""OFB"を使うことができる."RC4"にはNoneしか使えない.
  • 次は,"InitializationVector"の可能な設定である.
  • Automatic適切な初期化ベクトルを生成する
    ByteArray[]明示的に指定された初期化ベクトルを使用する
  • "InitializationVector"->Automaticのとき, Encryptは実行されるたびに新たな初期化ベクトルを生成する.ベクトルは,作成されたEncryptedObjectから後に入手できる.
  • 次は,サポートされる暗号とそのデフォルトの初期化ベクトルのサイズである.
  • "Blowfish"64ビット
    "CAST5"64ビット
    "DES"64ビット
    "IDEA"64ビット
    "AES128"128ビット
    "AES192"128ビット
    "AES256"128ビット
  • RSA暗号については,暗号化可能な最長データは を法としたバイト数と埋込みモードで,以下に従って決定される.
  • "PKCS1"<
    "OAEP"<
    None

例題

すべて開くすべて閉じる

  (3)

メッセージをパスワードを付けて暗号化する:

生の暗号化データと使われた暗号化アルゴリズムの詳細を示す:

パスワードで復号化し,メッセージを取り出す:

秘密鍵を生成する:

鍵を使って暗号化する:

公開鍵と秘密鍵を生成する:

公開鍵を使って暗号化する:

秘密鍵を使って復号化する:

秘密鍵を使って暗号化することもできる:

公開鍵を使って復号化する:

スコープ  (2)

式を暗号化する:

バイト配列は,文字通り暗号化されるので,外部プログラムでより使いやすい:

オプション  (5)

Method  (5)

特定の初期化ベクトルを使って暗号化する:

初期化ベクトルをAutomaticに設定すると,Encryptが呼ばれるたびにランダムな初期化ベクトルが生成される:

CTRブロックモードで暗号化する:

RSA暗号化に使用する充填スキームを指定する:

"Padding"Noneに設定して厳密に1ブロックのデータを暗号化する:

アプリケーション  (2)

メッセージを暗号化し,ファイルに暗号文を保存する:

ファイルのコンテンツをバイトとして読み出す:

もとの暗号文と比較する:

一時ファイルを削除する:

簡単な暗号署名と検証の関数を書く:

公開鍵と秘密鍵のペアを生成する:

署名に対する式を定義する:

署名を生成する:

署名が信頼できることを検証する:

他の式での検証は失敗する:

特性と関係  (2)

返された暗号化オブジェクトは,暗号化のすべての局面を保存する:

暗号文のバイトを抽出する:

暗号化に使った初期化ベクトルのバイトを抽出する:

あるブロックモードは他のブロックモードよりも安全である:

ECBを使って均一なデータを暗号化すると明らかな繰返しパターンが現れる:

CBCを使うとそのようなことはない:

考えられる問題  (5)

タイミング  (1)

パスワードを使った暗号化には鍵の派生が必要である.これは,故意に遅くしてある:

事前に鍵を生成しておくことで,これを避けることができる:

暗号化されたデータサイズ  (1)

暗号文は入力とは長さが異なることがある:

互換ではない鍵  (1)

楕円曲線に基づいた鍵を使った暗号化は,現在はサポートされていない:

互換ではない埋込みモード  (1)

秘密鍵で暗号化することが不可能な埋込みモードもある:

互換ではないブロックモード  (1)

RSAはブロックモード操作をサポートしない非対称の暗号なので,Encrypt"BlockMode"の設定を無視して進む:

RC4はブロックモード操作をサポートしないストリームなので,Encrypt"BlockMode"の設定を無視して進む:

Wolfram Research (2015), Encrypt, Wolfram言語関数, https://reference.wolfram.com/language/ref/Encrypt.html (2023年に更新).

テキスト

Wolfram Research (2015), Encrypt, Wolfram言語関数, https://reference.wolfram.com/language/ref/Encrypt.html (2023年に更新).

CMS

Wolfram Language. 2015. "Encrypt." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023. https://reference.wolfram.com/language/ref/Encrypt.html.

APA

Wolfram Language. (2015). Encrypt. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Encrypt.html

BibTeX

@misc{reference.wolfram_2024_encrypt, author="Wolfram Research", title="{Encrypt}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/Encrypt.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_encrypt, organization={Wolfram Research}, title={Encrypt}, year={2023}, url={https://reference.wolfram.com/language/ref/Encrypt.html}, note=[Accessed: 17-November-2024 ]}