Encrypt

Encrypt["password",expr]

使用指定的密码加密 expr,给出一个加密的对象.

Encrypt[keyspec,expr]

使用密码关键字规范 keyspec 加密 expr.

Encrypt[expr]

交互式请求一个密码,并用它对 expr 进行加密.

更多信息和选项

  • Encrypt 产生 EncryptedObject[],适合用 Decrypt 解密.
  • Encrypt[key,"string"] 产生一个 EncryptedObject 包含作为 UTF-8 编码的字符串内容的加密版本.
  • Encrypt[key,ByteArray[]] 产生一个 EncryptedObject,包含 ByteArray 对象中的原始字节加密版本.
  • 对于普通表达式,Encrypt[key,expr] 给出一个 EncryptedObject,实际上包含 Compress[expr] 的加密版本.
  • 加密方法基于 key 的密码和参数. 可查看 GenerateSymmetricKeyGenerateAsymmetricKeyPair 获取详细信息.
  • 在笔记本界面中,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"->AutomaticEncrypt 每次运行都会生成一个新的初始化向量. 以后,可以从生成的 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 ,只加密一个数据块:

应用  (2)

加密消息并把加密文本存为文件:

以字节方式读回文件内容:

与原始加密文本比较:

删除临时文件:

编写简单的加密符号和验证函数:

产生一对公用和私用密钥:

定义一个签名表达式:

产生签名:

验证签名是真实的:

验证其他表达式会失效:

属性和关系  (2)

返回的加密对象存储加密结果的所有方面:

提取加密文本中的字节:

提取用于加密的初始化矢量中的字节:

一些分组模式比其他模式更安全:

使用 ECB 加密统一数据时存在明显的重复模式:

用 CBC 加密则没有这个问题:

可能存在的问题  (5)

用时  (1)

使用密码的加密需要密钥导出,这样会很慢:

可以通过预先产生一个密钥避免:

加密数据的大小  (1)

加密文本可能与输入具有不同的长度:

不兼容的密钥  (1)

目前不支持使用基于椭圆曲线的密钥进行加密:

不兼容的填充模式  (1)

在某些填充模式下,无法使用私钥加密:

Incompatible Block Modes  (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 语言. 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_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 ]}