手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

decrypt(1)

名称

encrypt , decrypt - 加密或解密文件

用法概要

/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。如果未指定输出文件,将输出到标准输出。如果 cryptoadm -i–o 选项指定同一个文件,加密输出将写入到同一文件系统中的一个临时工作文件,然后用于替换原始文件。

解密时,如果 cryptoadm -i–o 指定同一个文件,明文将替换密文文件。

encrypt 的输出文件和 decrypt 的输入文件包含以下信息:

  • 输出格式版本号,采用网络字节顺序的 4 个字节。当前版本是 1。

  • 密钥生成函数中使用的迭代,采用网络字节顺序的 4 个字节。

  • IV(ivlen 字节)[1]。iv 数据由等于一个块大小的随机字节数生成。

  • 密钥生成中使用的 Salt 数据(16 字节)。

  • 密文数据。

选项

支持以下选项:

–a algorithm

指定加密或解密过程中要使用的算法的名称。有关详细信息,请参见“用法”部分的“算法”。

–i input_file

指定输入文件。如果未指定 input_file,则缺省为 stdin。

–k key_file

指定包含用于加密算法的密钥值的文件。每种算法都具有特定的密钥材料要求,如 PKCS#11 规范中所述。如果未指定 –kencrypt 会使用 getpassphrase(3C) 提示您提供密钥材料。密钥文件的大小确定了密钥长度,从终端设置的口令短语始终用于为密钥长度可变的密码生成长度为 128 位的密钥。

有关生成密钥文件的信息,请参见 pktool(1) 中的 genkey 子命令。此外,也可以使用 dd(1M)

–K key_label

指定 PKCS#11 令牌中的对称令牌密钥的标签。

–l

显示系统上可用的算法的列表。此列表可依加密框架的配置而变化。以位为单位显示密钥大小。

–o output_file

指定输出文件。如果未指定 output_file,则缺省为 stdout。如果使用 stdout 而不重定向到文件,则终端窗口可能会因原始加密或解密数据中止终端仿真而挂起,与有时查看二进制文件所遇到的情况类似。

–T token_spec

指定 PKCS#11 令牌,而不使用指定 –K 时的缺省软令牌对象存储。

token_spec 的格式为:

token_name [:manuf_id [:serial_no]]

当令牌标签包含结尾空格时,为方便起见,此选项不要求用户键入这些空格。

使用冒号分隔令牌标识字符串。如果任一部分中包含冒号 (:) 文本字符,必须使用反斜杠 (\) 对其进行转义。如果未找到冒号 (:),则将整个字符串(最多 32 个字符)视为令牌标签。如果仅找到一个冒号 (:),则该字符串是令牌标签和生产商。

–v

显示详细信息。请参见详细模式

用法

算法

–l 选项中显示支持的算法及其最小和最大密钥大小。这些算法由加密框架提供。所支持的每种算法都是 PKCS #11 机制的一个别名,对于特定的算法类型而言,PKCS #11 机制是最常用的也是限制最少的版本。例如,desCKM_DES_CBC_PAD 的别名,arcfourCKM_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

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

digest(1)pktool(1)mac(1)dd(1M)getpassphrase(3C)libpkcs11(3LIB)attributes(5)pkcs11_softtoken (5)

在 Oracle Solaris 11.2 中确保系统和连接设备的安全

RSA PKCS#11 v2.11: http://www.rsasecurity.com

RSA PKCS#5 v2.0: http://www.rsasecurity.com