Encrypt
更多信息和选项
- Encrypt 产生 EncryptedObject[…],适合用 Decrypt 解密.
- Encrypt[key,"string"] 产生一个 EncryptedObject 包含作为 UTF-8 编码的字符串内容的加密版本.
- Encrypt[key,ByteArray[…]] 产生一个 EncryptedObject,包含 ByteArray 对象中的原始字节加密版本.
- 对于普通表达式,Encrypt[key,expr] 给出一个 EncryptedObject,实际上包含 Compress[expr] 的加密版本.
- 加密方法基于 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 ,只加密一个数据块:
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 = 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)
Incompatible Block Modes (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 语言. 2015. "Encrypt." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2023. https://reference.wolfram.com/language/ref/Encrypt.html.
APA
Wolfram 语言. (2015). Encrypt. Wolfram 语言与系统参考资料中心. 追溯自 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: 15-September-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: 15-September-2026]}