跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1 部分:用户命令 Oracle Solaris 11 Information Library (简体中文) |
- 加密或解密文件
/usr/bin/encrypt -l
/usr/bin/encrypt -a algorithm [-v] [-k key_file | -K key_label [-T token_spec]] [-i input_file] [-o output_file]
/usr/bin/decrypt -l
/usr/bin/decrypt -a algorithm [-v] [-k key_file | -K key_label [-T token_spec]] [-i input_file] [-o output_file]
此实用程序可使用指定算法加密或解密给定的文件或 stdin。如果未指定输出文件,将输出到标准输出。如果输入和输出是同一文件,加密后的输出将写入同一文件系统中的临时工作文件,然后可用于替换原始文件。
在解密时,如果输入和输出是同一文件,则明文将替换密文文件。
encrypt 的输出文件和 decrypt 的输入文件包含以下信息:
输出格式版本号,采用网络字节顺序的 4 个字节。当前版本是 1。
密钥生成函数中使用的迭代,采用网络字节顺序的 4 个字节。
IV(ivlen 字节)[1]。iv 数据由等于一个块大小的随机字节数生成。
密钥生成中使用的 Salt 数据(16 字节)。
密文数据。
支持下列选项:
指定加密或解密过程中要使用的算法的名称。有关详细信息,请参见“用法”下的算法。
指定输入文件。如果未指定 input_file,则缺省为 stdin。
指定包含用于加密算法的密钥值的文件。每种算法都具有特定的密钥材料要求,如 PKCS#11 规范中所述。如果未指定 -k,encrypt 会使用 getpassphrase(3C) 提示您提供密钥材料。密钥文件的大小确定了密钥长度,从终端设置的口令短语始终用于为密钥长度可变的密码生成长度为 128 位的密钥。
指定 PKCS#11 令牌中的对称令牌密钥的标签。
显示系统上可用的算法的列表。此列表可依加密框架的配置而变化。以位为单位显示密钥大小。
指定输出文件。如果未指定 output_file,则缺省为 stdout。如果使用 stdout 而不重定向到文件,则终端窗口可能会因原始加密或解密数据中止终端仿真而挂起,与有时查看二进制文件所遇到的情况类似。
指定 PKCS#11 令牌,而不使用指定 -K 时的缺省软令牌对象存储。
token_spec 的格式为:
token_name [:manuf_id [:serial_no]]
当令牌标签包含结尾空格时,为方便起见,此选项不要求用户键入这些空格。
使用冒号分隔令牌标识字符串。如果任一部分中包含冒号 (:) 文本字符,必须使用反斜杠 (\) 对其进行转义。如果未找到冒号 (:),则将整个字符串(最多 32 个字符)视为令牌标签。如果仅找到一个冒号 (:),则该字符串是令牌标签和生产商。
显示详细信息。请参见详细模式。
在 -l 选项中显示支持的算法及其最小和最大密钥大小。这些算法由加密框架提供。所支持的每种算法都是 PKCS #11 机制的一个别名,对于特定的算法类型而言,PKCS #11 机制是最常用的也是限制最少的版本。例如,des 是 CKM_DES_CBC_PAD 的别名,arcfour 是 CKM_RC4 的别名。不支持没有任何填充或 ECB 的算法变体。
这些别名与 -a 选项一起使用,并且区分大小写。
若在加密和解密任务期间未使用 -k 选项,则会提示用户提供口令短语。使用 PKCS #5 中指定的 PBKDF2 算法将该口令短语处理成更安全的密钥。
当使用口令短语进行加密和解密时,会使用 http://www.rsasecurity.com PKCS #5 v2.0 中定义的 PBKDF2 算法将用户输入的口令短语转换成加密密钥。
如果向命令提供输入文件,则屏幕上会显示一个进度条。进度条会在每完成 25% 时使用一个管道符号 (|) 表示。如果输入来自标准输入,每读取 40KB 后都会显示一个句点 (.)。在两种输入方法都完成时,会显示 Done。
示例 1 列出可用算法
以下示例列出了可用的算法:
example$ encrypt -l Algorithm Keysize: Min Max ----------------------------------- aes 128 128 arcfour 8 128 des 64 64 3des 192 192
示例 2 使用 AES 加密
以下示例使用 AES 加密并提示用户提供加密密钥:
example$ encrypt -a aes -i myfile.txt -o secretstuff
示例 3 对密钥文件使用 AES 加密
以下示例在已创建密钥文件后使用 AES 加密:
example$ pktool genkey keystore=file keytype=aes keylen=128 \ outkey=key example$ encrypt -a aes -k key -i myfile.txt -o secretstuff
示例 4 使用输入管道提供加密的磁带备份
以下示例使用输入管道提供加密的磁带备份:
example$ ufsdump 0f - /var | encrypt -a arcfour \ -k /etc/mykeys/backup.k | dd of=/dev/rmt/0
示例 5 使用输入管道恢复磁带备份
以下示例使用输入管道恢复磁带备份:
example$ decrypt -a arcfour -k /etc/mykeys/backup.k \ -i /dev/rmt/0 | ufsrestore xvf -
示例 6 使用 3DES 算法加密输入文件
以下示例使用存储在 des3key 文件中的 192 位密钥加密 inputfile 文件:
example$ encrypt -a 3des -k des3key -i inputfile -o outputfile
示例 7 使用 DES 令牌密钥加密输入文件
以下示例使用软令牌密钥库中的 DES 令牌密钥加密输入文件。可使用 pktool(1) 生成 DES 令牌密钥:
example$ encrypt -a des -K mydeskey \ -T "Sun Software PKCS#11 softtoken" -i inputfile \ -o outputfile
将返回以下退出值:
成功完成。
出现错误。
有关下列属性的描述,请参见 attributes(5):
|
digest(1)、pktool(1)、mac(1)、dd(1M)、getpassphrase(3C)、libpkcs11(3LIB)、attributes(5)、pkcs11_softtoken(5)
RSA PKCS#11 v2.11: http://www.rsasecurity.com
RSA PKCS#5 v2.0: http://www.rsasecurity.com