openssl使用手册
openssl操作手册

OpenSSL 是一个开源的加密库,提供了各种加密算法、数字证书、SSL/TLS 协议等功能,被广泛用于网络安全和加密通信领域。
以下是OpenSSL 的一些常见用法和操作:1. 生成证书:使用OpenSSL 可以生成各种类型的数字证书,包括自签名证书、CA 证书、服务器证书、客户端证书等。
您可以使用OpenSSL 提供的命令行工具或API 接口来生成证书。
2. 加密和解密:OpenSSL 提供了各种加密算法,包括对称加密和非对称加密。
您可以使用OpenSSL 提供的命令行工具或API 接口来进行加密和解密操作。
3. 签名和验证:OpenSSL 提供了数字签名和验证的功能,可以用于保证数据的完整性和真实性。
您可以使用OpenSSL 提供的命令行工具或API 接口来进行签名和验证操作。
4. SSL/TLS 安全通信:OpenSSL 提供了SSL/TLS 协议的实现,可以用于安全通信。
您可以使用OpenSSL 提供的命令行工具或API 接口来实现SSL/TLS 安全通信。
5. 网络安全工具:OpenSSL 提供了各种网络安全工具,包括OpenSSL s_server、OpenSSL s_client、OpenSSL speed、OpenSSL rand 等。
这些工具可以用于测试和评估网络安全性能。
要使用OpenSSL,您需要安装OpenSSL 库,并包含相应的头文件。
在编写代码时,您可以调用OpenSSL 提供的函数和数据结构来实现您需要的加密、签名、SSL/TLS 安全通信等功能。
OpenSSL 提供了详细的文档和使用手册,您可以在OpenSSL 官方网站上找到完整的文档和参考手册。
在文档中,您可以找到各种函数的使用说明、示例代码和详细的接口说明,以帮助您更好地使用OpenSSL 库。
openssl摘要和签名验证指令dgst使用详解

openssl摘要和签名验证指令dgst使⽤详解1、信息摘要和数字签名概述信息摘要:对数据进⾏处理,得到⼀段固定长度的结果,其特点输⼊:1、输出长度固定。
即输出长度和输⼊长度⽆关。
2、不可逆。
即由输出数据理论上不能推导出输⼊数据4、对输⼊数据敏感。
当输⼊数据变化极⼩时,输出数据也会发⽣明显的变化5、防碰撞。
即不同的数据数据得到相同输出数据的可能性极低。
由于信息摘要有上述特点,⼀般保证数据的完整性,对⼀个⼤⽂件进⾏摘要运算,得到其摘要值。
通过⽹络或者其他渠道传输后,通过验证其摘要值,确定⼤⽂件本⾝有没有发⽣变化。
数字签名:数字签名其实分成两步,⾸先对原始⽂件进⾏摘要运算,得到摘要值,然后使⽤公开密钥算法中的私钥对摘要值进⾏加密。
其签名和验证过程如下图所⽰有数字签名的过程可以知道,对发送信息进⾏数字签名,可以保证数字签名的完整性、真实性、不可抵赖性。
即接收者可以确认消息的来源、消息的真实,发送者不可以抵赖⾃⼰发送的消息,与现实⽣活中签名的作⽤⼤致相同。
2、摘要算法和数字签名相关指令及⽤法⽬前openssl提供的摘要算法有md4、md5、ripemd160、sha、sha1、sha224、sha256、sha512、sha384、wirlpool。
可以通过openssl dgst -命令查看。
上⾯我们已经提到了,数字签名分为摘要和加密两部分。
在openssl提供的指令中,并没有区分两者。
⽽是在摘要算法指令中包含了签名和校验参数。
例如我们适⽤openssl md5 -命令可以看到它提供的选项有签名和验证等参数。
在openssl中单独使⽤摘要算法指令完成摘要或者签名操作,也可以通过dgst完成相同的操作。
在签名的时候多数使⽤RSA私钥或者DSA私钥,当使⽤RSA私钥的时候,我们可以使⽤单独的摘要算法指令指定摘要算法进⾏签名,但当使⽤DSA使⽤签名的时候,就必须使⽤dgst指令,因为使⽤DSA签名的时候必须使⽤DSA⾃⾝的摘要算法,⽽openssl没有为它提供相应的指令。
openssl3 手册

openssl3 手册OpenSSL 3 手册第一章:介绍OpenSSL 3 是一套开放源代码的安全套接字层密码库,提供了一系列用于安全通信的加密算法和协议实现。
本手册将为您详细介绍OpenSSL 3 的功能、用法和配置。
第二章:安装在开始使用 OpenSSL 3 之前,您需要先安装它。
以下是安装OpenSSL 3 的步骤:1. 下载 OpenSSL 3 的最新版本压缩包,并解压到您的计算机上。
2. 打开终端或命令提示符,进入解压后的 OpenSSL 3 目录。
3. 执行以下命令编译和安装 OpenSSL 3:```./configmakemake install```第三章:常用命令OpenSSL 3 提供了丰富的命令行工具,用于执行各种任务,包括生成证书、加密文件和检查数字签名等。
以下是一些常用的命令及其用法:1. 生成自签名证书:```openssl req -newkey rsa:2048 -nodes -keyout privateKey.key -x509 -days 365 -out certificate.crt```该命令将生成一个私钥和自签名证书,有效期为 365 天。
2. 加密文件:```openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt```上述命令将使用AES-256-CBC 加密算法对plaintext.txt 进行加密,并将加密后的结果保存到 encrypted.txt。
3. 创建数字签名:```openssl dgst -sha256 -sign privateKey.key -out signature.bin data.txt```该命令将使用 SHA-256 算法对 data.txt 进行哈希,并使用私钥对哈希值进行签名,生成 signature.bin。
4. 验证数字签名:```openssl dgst -sha256 -verify certificate.crt -signature signature.bin data.txt```上述命令将使用公钥证书验证 signature.bin 是否为 data.txt 的有效签名。
openssl3 手册

openssl3 手册摘要:1.OpenSSL3 简介2.OpenSSL3 的安装与配置3.OpenSSL3 的功能与应用4.OpenSSL3 的安全性5.OpenSSL3 的未来发展正文:【OpenSSL3 简介】OpenSSL3 是一个强大的安全套接字层(SSL)库,用于加密网络通信。
它是OpenSSL2 的升级版本,提供了许多改进和新功能。
OpenSSL3 提供了广泛的加密和签名算法,支持各种安全协议,如TLS、SSL、DTLS 等。
它广泛应用于Web 服务器、客户端应用程序和各种网络设备中,保障网络通信的安全性。
【OpenSSL3 的安装与配置】安装OpenSSL3 非常简单,只需从官方网站下载源代码并按照官方文档进行编译和安装即可。
安装完成后,需要对OpenSSL3 进行配置,包括设置加密算法、证书、密钥等。
配置过程可以通过命令行工具或编译时选项完成。
【OpenSSL3 的功能与应用】OpenSSL3 提供了许多功能,包括加密、签名、哈希等。
它可以用于保护网络通信、数字签名文件、加密文件等。
OpenSSL3 还支持各种安全协议,如TLS、SSL、DTLS 等,可以满足各种应用场景的需求。
【OpenSSL3 的安全性】OpenSSL3 非常注重安全性,采用了多种措施来保障通信的安全性。
它支持多种加密算法,如AES、RSA、ECC 等,可以根据需求选择合适的加密算法。
此外,OpenSSL3 还支持证书验证、密钥交换、哈希函数等,可以有效防止各种攻击。
【OpenSSL3 的未来发展】随着网络通信的不断发展,OpenSSL3 将继续完善和升级,以适应新的需求。
未来,OpenSSL3 可能会引入更多的加密算法、支持更多的安全协议,并继续提高安全性能。
同时,OpenSSL3 还将加强与其他安全技术的集成,如IPsec、TLS 等,以提供更全面的安全解决方案。
总之,OpenSSL3 是一个重要的安全库,用于加密网络通信。
openssl使用流程

openssl使用流程OpenSSL使用流程介绍OpenSSL 是一个开源的加密工具包和安全通信协议实现库,提供了一系列的加密算法、SSL/TLS 防护和各种安全工具,广泛应用于网络通信、服务器配置、数字证书管理等各个领域。
本文将以OpenSSL 的使用流程为主题,一步一步详细回答。
一、准备工作1. 下载和安装OpenSSL:首先,我们需要从OpenSSL 的官方网站或其他可信来源下载并安装OpenSSL。
根据操作系统的不同,选择相应的版本进行下载和安装。
2. 生成RSA 密钥对:在开始使用OpenSSL 之前,建议先生成一对RSA 密钥对,用于后续的加密和解密操作。
在命令行中输入以下命令可以生成一个2048 位的RSA 密钥对:openssl genrsa -out private.key 2048该命令将生成一个名为private.key 的私钥文件,其中包含了生成的RSA 私钥。
接着,可以使用以下命令生成对应的公钥文件:openssl rsa -in private.key -pubout -out public.key这将生成一个名为public.key 的公钥文件,其中包含了与私钥对应的RSA 公钥。
二、公钥加密和私钥解密1. 加密数据:使用公钥加密数据是一种常见的操作,可以保证数据在传输过程中的机密性。
在命令行中输入以下命令可以使用公钥对数据进行加密:openssl rsautl -encrypt -pubin -inkey public.key -in plaintext.txt -out ciphertext.enc该命令将使用public.key 中的公钥对plaintext.txt 中的明文数据进行加密,并将密文数据存储到ciphertext.enc 文件中。
2. 解密数据:解密数据需要使用对应的私钥进行操作。
在命令行中输入以下命令可以使用私钥对密文数据进行解密:openssl rsautl -decrypt -inkey private.key -in ciphertext.enc -out plaintext.txt该命令将使用private.key 中的私钥对ciphertext.enc 中的密文数据进行解密,并将解密后的明文数据存储到plaintext.txt 文件中。
openssl简易文档

openssl简易文档一:编译前置工作:1.下载openssl.网址:/source/2.解压缩.3.下载activeperl,并安装.编译:用vs2005编译,编译之前要先根据配置生成makefile,具体为下面a,b,c三步:a.C:\OpenSSL\openssl-0.9.8>Perl Configure VC-WIN32b.C:\OpenSSL\openssl1-0.9.8>ms\do_ms.batc.C:\OpenSSL\openssl-0.9.8>nmake -f ms\ntdll.mak编译选项:我们必须在生成makefile前使得openssl得到正确配置,方法就是在Perl Configure VC-WIN32命令行加入编译选项,具体为:Perl Configure VC-WIN32 XXX,其中XXX为下列三大类全局选项第一类是全局性选项:zlibzlib-dynamicno-zlib使用静态的zlib压缩库、使用动态的zlib压缩库、不使用zlib压缩功能。
threadsno-threads是否编译支持多线程的库。
默认支持。
sharedno-shared是否生成动态连接库。
(重点)enable-sse2no-sse2启用/禁用SSE2指令集加速。
如果你的CPU支持SSE2指令集,就可以打开,否则就要关闭。
gmpno-gmp启用/禁用GMP库rfc3779no-rfc3779启用/禁用实现X509v3证书的IP地址扩展krb5no-krb5启用/禁用Kerberos 5 支持sslno-sslssl2ssl3no-ssl2no-ssl3tlsno-tls 启用/禁用SSL(包含了SSL2/SSL3) TLS 协议支持。
算法选项可选的目录如下:no-md2,no-md4,no-mdc2,no-ripemd这些都是摘要算法,含义一目了然。
Linux怎么使用OpenSSL命令行

Linux怎么使用OpenSSL命令行Linux怎么使用OpenSSL命令行OpenSSL是一款命令行工具可以用来做检测,加密解密等等,尤其在Linux中很实用。
那么Linux要如何使用OpenSSL命令行呢?下面小编将针对OpenSSL命令行的使用给大家做个详细介绍。
Linux如何使用OpenSSL命令行1. base64编码/解码谈到命令行下如何发送邮件附件,很多人想起了uuencode。
也可以使用base64编码。
以下是openssl base64编码/解码的使用:$ openssl base64 《filename.bin 》filename.txt$ openssl base64 -d 《filename.txt 》filename.bin2. 校验文件的一致性UNIX下校验文件一致性的方法很多,比如sum、cksum、md5sum、sha1sum等。
sum和cksum适用于简单校验的场合,生成的校验码容易重复。
md5sum有安全漏洞,当前比较推荐的是sha1sum。
不过sha1sum在不同的平台用法有些不同。
考虑到跨平台性,建议用openssl。
$ openssl sha1 filenameSHA1(filename)=e83a42b9bc8431a6645099be50b6341a35d3dceb$ openssl md5 filenameMD5(filename)= 26e9855f8ad6a5906fea121283c729c43. 文件加密/解密OpenSSL支持很多加密算法,不过一些算法只是为了保持向后兼容性,现在已不推荐使用,比如DES和RC4-40。
推荐使用的加密算法是bf(Blowfish)和-aes-128-cbc(运行在CBC模式的128 位密匙AES加密算法),加密强度有保障。
加密示例:$ openssl enc -aes-128-cbc 《filename 》filename.aes-128-cbcenter aes-128-cbc encryption password:Verifying - enter aes-128-cbc encryption password:解密示例:$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc 》filenameenter aes-128-cbc decryption password:4. 口令生成和传递openssl可以生成随机性很强的口令。
openssl pkcs8用法

openssl pkcs8用于将私钥(PEM格式)转换为PKCS#8格式。
PKCS#8定义了一个通用的私钥信息语法,可用于存储加密的私钥信息。
在网络安全和密码学领域,PKCS#8已被广泛应用,因此了解openssl pkcs8的用法对于网络安全从业者至关重要。
本文将详细介绍openssl pkcs8的用法,以及相关注意事项。
一、openssl pkcs8概述openssl是一个开源的密码学工具包,提供了一系列工具和库用于处理证书、私钥、对称密钥、摘要和加密等操作。
其中,openssl pkcs8是openssl中的一个命令行工具,用于将私钥转换为PKCS#8格式,以便在不同系统和软件之间进行私钥的共享和使用。
二、openssl pkcs8的用法1.生成PKCS#8格式的私钥要将现有的PEM格式的私钥转换为PKCS#8格式,可以使用以下命令:```shellopenssl pkcs8 -topk8 -inform PEM -in yourPrivateKey.pem -outform PEM -nocrypt -out yourPKCS8PrivateKey.pem```其中,yourPrivateKey.pem为原始的PEM格式私钥文件,yourPKCS8PrivateKey.pem为生成的PKCS#8格式私钥文件。
2.将PKCS#8私钥转换为PEM格式如果需要将PKCS#8格式的私钥转换为PEM格式,可以使用以下命令:```shellopenssl pkcs8 -inform PEM -in yourPKCS8PrivateKey.pem -outform PEM -out yourPrivateKey.pem```其中,yourPKCS8PrivateKey.pem为PKCS#8格式私钥文件,yourPrivateKey.pem为生成的PEM格式私钥文件。
三、openssl pkcs8的注意事项1.密码保护在使用openssl pkcs8转换私钥格式时,建议对私钥进行密码保护,以增加私钥的安全性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenSSL有两种运行模式:交互模式和批处理模式。
直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。
(1) 配置文件OpenSSL的默认配置文件位置不是很固定,可以用openssl ca命令得知。
你也可以指定自己的配置文件。
当前只有三个OpenSSL命令会使用这个配置文件:ca, req, x509。
有望未来版本会有更多命令使用配置文件。
(2)消息摘要算法支持的算法包括:MD2, MD4, MD5, MDC2, SHA1(有时候叫做DSS1), RIPEMD-160。
SHA1和RIPEMD-160产生160位哈西值,其他的产生128位。
除非出于兼容性考虑,否则推荐使用SHA1或者RIPEMD-160。
除了RIPEMD-160需要用rmd160命令外,其他的算法都可用dgst命令来执行。
OpenSSL对于SHA1的处理有点奇怪,有时候必须把它称作DSS1来引用。
消息摘要算法除了可计算哈西值,还可用于签名和验证签名。
签名的时候,对于DSA生成的私匙必须要和DSS1(即SHA1)搭配。
而对于RSA生成的私匙,任何消息摘要算法都可使用。
############################################################## 消息摘要算法应用例子# 用SHA1算法计算文件file.txt的哈西值,输出到stdout$ openssl dgst -sha1 file.txt# 用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt$ openssl sha1 -out digest.txt file.txt# 用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin# 签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中$ openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt# 用dss1算法验证file.txt的数字签名dsasign.bin,# 验证的private key为DSA算法产生的文件dsakey.pem$ openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt# 用sha1算法为文件file.txt签名,输出到文件rsasign.bin# 签名的private key为RSA算法产生的文件rsaprivate.pem$ openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt# 用sha1算法验证file.txt的数字签名rsasign.bin,# 验证的public key为RSA算法生成的rsapublic.pem$ openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt(3) 对称密码OpenSSL支持的对称密码包括Blowfish, CAST5, DES, 3DES(Triple DES), IDEA, RC2, RC4以及RC5。
OpenSSL 0.9.7还新增了AES的支持。
很多对称密码支持不同的模式,包括CBC, CFB, ECB以及OFB。
对于每一种密码,默认的模式总是CBC。
需要特别指出的是,尽量避免使用ECB模式,要想安全地使用它难以置信地困难。
enc命令用来访问对称密码,此外还可以用密码的名字作为命令来访问。
除了加解密,base64可作为命令或者enc命令选项对数据进行base64编码/解码。
当你指定口令后,命令行工具会把口令和一个8字节的salt(随机生成的)进行组合,然后计算MD5 hash值。
这个hash值被切分成两部分:加密钥匙(key)和初始化向量(initializationvector)。
当然加密钥匙和初始化向量也可以手工指定,但是不推荐那样,因为容易出错。
############################################################## 对称加密应用例子# 用DES3算法的CBC模式加密文件plaintext.doc,# 加密结果输出到文件ciphertext.bin$ openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin# 用DES3算法的OFB模式解密文件ciphertext.bin,# 提供的口令为trousers,输出到文件plaintext.doc# 注意:因为模式不同,该命令不能对以上的文件进行解密$ openssl enc -des-ede3-ofb -d -in ciphertext.bin -out plaintext.doc -pass pass:trousers# 用Blowfish的CFB模式加密plaintext.doc,口令从环境变量PASSWORD中取# 输出到文件ciphertext.bin$ openssl bf-cfb -salt -in plaintext.doc -out ciphertext.bin -pass env:PASSWORD# 给文件ciphertext.bin用base64编码,输出到文件base64.txt$ openssl base64 -in ciphertext.bin -out base64.txt# 用RC5算法的CBC模式加密文件plaintext.doc# 输出到文件ciphertext.bin,# salt、key和初始化向量(iv)在命令行指定$ openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K89D4B1678D604FAA3DBFFD030A314B29(4)公匙密码4.1 Diffie-Hellman被用来做钥匙协商(key agreement),具有保密(secrecy)功能,但是不具有加密(encryption)或者认证(authentication)功能,因此在进行协商前需用别的方式对另一方进行认证。
首先,Diffie-Hellman创建一套双方都认可的参数集,包括一个随机的素数和生成因子(generator value,通常是2或者5)。
基于这个参数集,双方都计算出一个公钥匙和私钥匙,公钥匙交给对方,对方的公钥匙和自己的私钥匙用来计算共享的钥匙。
OpenSSL 0.9.5 提供了dhparam命令用来生成参数集,但是生成公钥匙和私钥匙的命令dh 和gendh已不推荐使用。
未来版本可能会加上这个功能。
############################################################## Diffie-Hellman应用例子# 使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数# 输出保存到文件dhparam.pem$ openssl dhparam -out dhparam.pem -2 1024# 从dhparam.pem中读取Diffie-Hell参数,以C代码的形式# 输出到stdout$ openssl dhparam -in dhparam.pem -noout -C4.2 数字签名算法(Digital Signature Algorithm, DSA)主要用来做认证,不能用来加密(encryption)或者保密(secrecy),因此它通常和Diffie-Hellman配合使用。
在进行钥匙协商前先用DSA进行认证(authentication)。
有三个命令可用来完成DSA算法提供的功能。
dsaparam命令生成和检查DSA参数,还可生成DSA私钥匙。
gendsa命令用来为一套DSA参数生成私钥匙,这把私钥匙可明文保存,也可指定加密选项加密保存。
可采用DES,3DES,或者IDEA进行加密。
dsa命令用来从DSA的私钥匙中生成公钥匙,还可以为私钥匙加解密,或者改变私钥匙加密的口令。
############################################################## DSA应用例子# 生成1024位DSA参数集,并输出到文件dsaparam.pem$ openssl dsaparam -out dsaparam.pem 1024# 使用参数文件dsaparam.pem生成DSA私钥匙,# 采用3DES加密后输出到文件dsaprivatekey.pem$ openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem# 使用私钥匙dsaprivatekey.pem生成公钥匙,# 输出到dsapublickey.pem$ openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem# 从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,# 然后写回文件dsaprivatekey.pem$ openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin4.3 RSARSA得名于它的三位创建者:Ron Rivest, Adi Shamir, Leonard Adleman。
目前之所以如此流行,是因为它集保密、认证、加密的功能于一体。
不像Diffie-Hellman和DSA,RSA算法不需要生成参数文件,这在很大程度上简化了操作。
有三个命令可用来完成RSA提供的功能。
genrsa命令生成新的RSA私匙,推荐的私匙长度为1024位,不建议低于该值或者高于2048位。
缺省情况下私匙不被加密,但是可用DES、3DES或者IDEA加密。
rsa命令可用来添加、修改、删除私匙的加密保护,也可用来从私匙中生成RSA公匙,或者用来显示私匙或公匙信息。
rsautl命令提供RSA加密和签名功能。
但是不推荐用它来加密大块数据,或者给大块数据签名,因为这种算法的速度较来慢。
通常用它给对称密匙加密,然后通过enc命令用对称密匙对大块数据加密。
############################################################## RSA应用例子# 产生1024位RSA私匙,用3DES加密它,口令为trousers,# 输出到文件rsaprivatekey.pem$ openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024# 从文件rsaprivatekey.pem读取私匙,用口令trousers解密,# 生成的公钥匙输出到文件rsapublickey.pem$ openssl rsa -in rsaprivatekey.pem -passin pass:trousers -pubout -out rsapubckey.pem# 用公钥匙rsapublickey.pem加密文件plain.txt,# 输出到文件cipher.txt$ openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt# 使用私钥匙rsaprivatekey.pem解密密文cipher.txt,# 输出到文件plain.txt$ openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt# 用私钥匙rsaprivatekey.pem给文件plain.txt签名,# 输出到文件signature.bin$ openssl rsautl -sign -inkey rsaprivatekey.pem -in plain.txt -out signature.bin# 用公钥匙rsapublickey.pem验证签名signature.bin,# 输出到文件plain.txt$ openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out plain(5) S/MIME[Secure Multipurpose Internet Mail Exchange]S/MIME应用于安全邮件交换,可用来认证和加密,是PGP的竞争对手。