当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 保护 CmsMessage (Microsoft.PowerShell.Security)

作者:精品下载站 日期:2024-12-14 02:09:13 浏览:13 分类:玩电脑

保护 CmsMessage (Microsoft.PowerShell.Security)


Protect-CmsMessage

模块 :Microsoft.PowerShell.Security

使用加密消息语法格式加密内容。

句法

Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-Content] <PSObject>
       [[-OutFile] <String>]
       [<CommonParameters>]
Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-Path] <String>
       [[-OutFile] <String>]
       [<CommonParameters>]
Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-LiteralPath] <String>
       [[-OutFile] <String>]
       [<CommonParameters>]

描述

Protect-CmsMessage cmdlet 使用加密消息语法 (CMS) 格式对内容进行加密。

CMS cmdlet 支持使用 RFC5652 中记录的 IETF 格式对内容进行加密和解密。

CMS 加密标准使用公钥加密,其中用于加密内容的密钥(公钥)和用于解密内容的密钥(私钥)是分开的。您的公钥可以广泛共享,并且不是敏感数据。如果任何内容使用此公钥加密,则只有您的私钥可以解密它。有关详细信息,请参阅公钥加密。

您必须先设置加密证书,然后才能运行 Protect-CmsMessage cmdlet。要在 PowerShell 中识别,加密证书需要唯一的扩展密钥使用 (EKU) ID 以将其标识为数据加密证书(例如代码签名和加密邮件的 ID)。有关适用于文档加密的证书示例,请参阅本主题中的示例 1。

PowerShell 7.1 中添加了对 Linux 和 macOS 的支持。

示例

示例 1:创建用于加密内容的证书

您必须先创建加密证书,然后才能运行 Protect-CmsMessage cmdlet。使用以下文本,将主题行中的名称更改为您的姓名、电子邮件或其他标识符,并将证书保存在文件中(例如 DocumentEncryption.inf,如此例中所示)。

# Create .INF file for certreq
{[Version]
Signature = "$Windows NT$"

[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_DOCUMENT_ENCRYPTION = "1.3.6.1.4.1.311.80.1"

[NewRequest]
Subject = "[email protected]"
MachineKeySet = false
KeyLength = 2048
KeySpec = AT_KEYEXCHANGE
HashAlgorithm = Sha1
Exportable = true
RequestType = Cert
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DATA_ENCIPHERMENT_KEY_USAGE"
ValidityPeriod = "Years"
ValidityPeriodUnits = "1000"

[Extensions]
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%"
} | Out-File -FilePath DocumentEncryption.inf

# After you have created your certificate file, run the following command to add
# the certificate file to the certificate store. Now you are ready to encrypt and
# decrypt content with the next two examples.
certreq.exe -new DocumentEncryption.inf DocumentEncryption.cer

示例 2:加密通过电子邮件发送的消息

$Protected = "Hello World" | Protect-CmsMessage -To "*[email protected]*"

在以下示例中,您通过管道将消息“Hello World”加密到 Protect-CmsMessage cmdlet,然后将加密的消息保存在变量中。 收件人 参数使用证书中主题行的值。

示例3:查看文档加密证书

PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert

要查看证书提供程序中的文档加密证书,您可以添加 Get-ChildItem 的 DocumentEncryptionCert 动态参数,该参数仅在加载证书提供程序时可用。

参数

-Content

指定包含要加密的内容的PSObject。例如,您可以加密事件消息的内容,然后使用包含该消息的变量(本示例中为 $Event)作为 Content 参数的值:$event=Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1。您还可以使用 Get-Content cmdlet 获取文件(例如 Microsoft Word 文档)的内容,并将内容保存在用作 Content 值的变量中。参数。

类型 :

PS对象

位置:

1

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-LiteralPath

指定要加密的内容的路径。与 Path 不同,LiteralPath 的值完全按照键入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其用单引号引起来。单引号告诉 PowerShell 不要将任何字符解释为转义序列。

类型 :

String

位置:

1

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-OutFile

指定要将加密内容发送到的文件的路径和文件名。

类型 :

String

位置:

2

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Path

指定要加密的内容的路径。

类型 :

String

位置:

1

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-To

指定一个或多个 CMS 消息收件人,以以下任一格式标识:

  • 实际证书(从证书提供商处检索)。
  • 包含证书的文件的路径。
  • 包含证书的目录的路径。
  • 证书的指纹(用于在证书存储中查找)。
  • 证书的使用者名称(用于在证书存储中查找)。
类型 :

Cms消息接收者[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯