Makes encrypting and decrypting strings and other security work easy.

Minimum PowerShell version


There is a newer prerelease version of this module available.
See the version list below for details.

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Carbon.Cryptography -RequiredVersion 1.0.0

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name Carbon.Cryptography -Version 1.0.0

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More


Aaron Jensen and WebMD Health Services


(c) Aaron Jensen and WebMD Health Services.

Package Details



Desktop Core Caron security convert securestring string certificate certificates x509 x509certificate x509certificates install uninstall encrypt decrypt aes rsa protect unprotect crypto cryptography dpapi key public-key private-key asymmetric symmetric


Convert-CSecureStringToByte Convert-CSecureStringToString Get-CCertificate Install-CCertificate Protect-CString Uninstall-CCertificate Unprotect-CString


Desktop Core


This module has no dependencies.

Release Notes

# Upgrade Instructions

If upgrading from Carbon 2, you should do the following:

* `Get-CCertificate` and `Install-CCertificate` no longer accept plaintext passwords. Ensure the value passed to the
 `Password` parameter of the `Get-CCertificate` and `Install-CCertificate` functions is a `[securestring]`.
* `Install-CCertificate` no longer installs a certificate if it is already installed. Add a `-Force` switch to all
 usages of `Install-CCertificate` where you need existing certificates to be replaced.
* `Install-CCertificate` no longer returns the installed certificate. Add a `-PassThru` switch to all usages of
 `Install-CCertificate` where your code expects a return value.
* `Unprotect-CString` now returns decrypted text as a `[securestring]`. Add the `-AsPlainText` to use the old behavior
 and get back a plain text string. Remove the `-AsSecureString` parameter if you were previously requesting a secure

# Changes

* Migrated `Convert-CSecureStringToString` from Carbon.
* `Convert-CSecureStringToString` now accepts piping in secure strings.
* Migrated `Get-CCertificate`, `Install-CCertificate`, and `Uninstall-CCertificate` from Carbon.
* Changed the `Password` parameter on the `Get-CCertificate` and `Install-CCertificate` functions to be a
 `[securestring]`. Plain text passwords are no longer allowed.
* `Install-CCertificate` no longer installs a certificate if it is already installed. Use the new `-Force` switch to
 always re-install a certificate.
* `Install-CCertificate` no longer always returns the installed certificate. If you want the certificate returned, use
 the new `-PassThru` switch.
* The `Get-CCertificate` function's default parameter set is now loading a certificate by path and you no longer have
 to explicitly provide the `-Path` parameter.
* The `Unprotect-CString` function now returns the decrypted text as a `[securestring]` by default instead of a
 `[String]`. Use the `-AsPlainText` switch to get a plain text string back (not recommended).


Version History

Version Downloads Last updated
3.3.0 169 1/31/2024
3.2.0 609 10/17/2023
3.1.3 2,234 4/26/2023
3.1.2 725 3/10/2023
3.1.1 11 3/8/2023
3.1.0 82 2/18/2023
3.1.0-rc2 5 1/25/2023
3.1.0-rc1 23 1/20/2023
3.0.0 1,866 7/22/2022
2.3.0 119 4/12/2022
2.3.0-alpha198 81 4/8/2022
2.2.1 210 3/17/2022
2.2.0 608 10/27/2021
2.1.0 95 10/22/2021
2.0.0 92 10/20/2021
1.1.0 142 10/20/2021
1.0.4 228 5/14/2021
1.0.3 157 3/8/2021
1.0.2 106 2/6/2021
1.0.1 95 2/5/2021
1.0.0 (current version) 95 2/2/2021
Show less