Encrypt
詳細とオプション
- 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"要素は,不完全な入力を充填する方法を指定する.
- 対称キーによる暗号化はAutomaticとNoneの充填法をサポートする.
- 公開鍵による暗号化と秘密鍵による復号化は,"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)
Encrypt["my password", "Now is the time..."]InputForm[%]Decrypt["my password", %]key = GenerateSymmetricKey[]Encrypt[key, "Now is the time..."]Decrypt[key, %]keys = GenerateAsymmetricKeyPair[]Encrypt[keys["PublicKey"], "Now is the time..."]Decrypt[keys["PrivateKey"], %]Encrypt[keys["PrivateKey"], "Now is the time..."]Decrypt[keys["PublicKey"], %]スコープ (2)
オプション (5)
Method (5)
key = GenerateSymmetricKey[];
Encrypt[key, "Specified IV example", Method -> <|"InitializationVector" -> ByteArray[{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}]|>]初期化ベクトルをAutomaticに設定すると,Encryptが呼ばれるたびにランダムな初期化ベクトルが生成される:
key = GenerateSymmetricKey[];Encrypt[key, "Automatic IV example", Method -> <|"InitializationVector" -> Automatic|>]%["InitializationVector"]key = GenerateSymmetricKey[];Encrypt[key, "CTR block mode example", Method -> <|"BlockMode" -> "CTR"|>]keys = GenerateAsymmetricKeyPair[];
Encrypt[keys["PublicKey"], "Now is the time...", Method -> <|"Padding" -> "OAEP"|>]"Padding"をNoneに設定して厳密に1ブロックのデータを暗号化する:
key = GenerateSymmetricKey[];Encrypt[key, ByteArray["3072ICGBQhJED8uxEt7OLg=="], Method -> <|"Padding" -> None|>]アプリケーション (2)
enc = Encrypt["my password", "Now is the time..."]file = FileNameJoin[{$TemporaryDirectory, "test"}];BinaryWrite[file, Normal[enc["Data"]]];Close[file];BinaryReadList[file]Normal[enc["Data"]]DeleteFile[file]sign[key_PrivateKey, expr_] := Encrypt[key, Hash[expr, "SHA256"]]verify[key_PublicKey, expr_, signature_EncryptedObject] := Decrypt[key, signature] === Hash[expr, "SHA256"]keys = GenerateAsymmetricKeyPair[]expr = Graphics[Disk[]]sig = sign[keys["PrivateKey"], expr]verify[keys["PublicKey"], expr, sig]verify[keys["PublicKey"], "another expression", sig]特性と関係 (2)
返された暗号化オブジェクトは,暗号化のすべての局面を保存する:
enc = Encrypt["my password", ByteArray[{1, 2, 3, 4, 5}]]enc["Data"]//Normalenc["InitializationVector"]//Normalkey = GenerateSymmetricKey[];ECBを使って均一なデータを暗号化すると明らかな繰返しパターンが現れる:
ecb = Encrypt[key, ByteArray[ConstantArray[1, 100]], Method -> <|"BlockMode" -> "ECB"|>];ListLinePlot[Normal[ecb["Data"]]]cbc = Encrypt[key, ByteArray[ConstantArray[1, 100]], Method -> <|"BlockMode" -> "CBC"|>];ListLinePlot[Normal[cbc["Data"]]]考えられる問題 (5)
タイミング (1)
暗号化されたデータサイズ (1)
互換ではない鍵 (1)
互換ではない埋込みモード (1)
互換ではないブロックモード (1)
RSAはブロックモード操作をサポートしない非対称の暗号なので,Encryptは"BlockMode"の設定を無視して進む:
keys = GenerateAsymmetricKeyPair[];
Encrypt[keys["PublicKey"], "RSA is an asymmetric cipher", Method -> <|"BlockMode" -> "CBC"|>]RC4はブロックモード操作をサポートしないストリームなので,Encryptは"BlockMode"の設定を無視して進む:
key = GenerateSymmetricKey[Method -> "RC4"];
Encrypt[key, "RC4 is a stream cipher", Method -> <|"BlockMode" -> "CFB"|>]テキスト
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_2026_encrypt, author="Wolfram Research", title="{Encrypt}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/Encrypt.html}", note=[Accessed: 12-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_encrypt, organization={Wolfram Research}, title={Encrypt}, year={2023}, url={https://reference.wolfram.com/language/ref/Encrypt.html}, note=[Accessed: 12-October-2026]}