nug Createrun NuGet

System.Security.Cryptography.ProtectedData

9.0.13 85 download(s)
public

Provides access to Windows Data Protection Api. Commonly Used Types: System.Security.Cryptography.DataProtectionScope System.Security.Cryptography.ProtectedData

PackageReference
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="9.0.13" />
.NET CLI
dotnet add package System.Security.Cryptography.ProtectedData --version 9.0.13

Dependencies

netstandard2.0
Package Version range
System.Memory [4.5.5, )

Readme

## About

<!-- A description of the package and where one can find more documentation -->

System.Security.Cryptography.ProtectedData offers a simplified interface for utilizing Microsoft Windows DPAPI's [CryptProtectData](https://learn.microsoft.com/windows/win32/api/dpapi/nf-dpapi-cryptprotectdata) and [CryptUnprotectData](https://learn.microsoft.com/windows/win32/api/dpapi/nf-dpapi-cryptunprotectdata) functions.

**Note**: Since it relies on Windows DPAPI, this package is only supported on Windows platforms.
For more complex cryptographic operations or cross-platform support, consider the [System.Security.Cryptography](https://learn.microsoft.com/dotnet/api/system.security.cryptography) namespace.

## Key Features

<!-- The key features of this package -->

* Built upon the robust and secure Windows Data Protection API (DPAPI).
* Data can be protected either for current process or for any process on the machine.
* Scope of protection can be defined either to the current user or the local machine.

## How to Use

<!-- A compelling example on how to use this package with code, as well as any specific guidelines for when to use the package -->

Utilizing this package is quite simple, and it mainly revolves around two methods: `Protect` and `Unprotect`.

Here, `originalData` is the data you want to protect, `optionalEntropy` is an additional byte array used to increase encryption complexity, and `DataProtectionScope` specifies whether the data protection should apply to the current user or the machine.

```csharp
using System.Security.Cryptography;
using System.Text;

byte[] originalData = Encoding.UTF8.GetBytes("This is a secret");
byte[] optionalEntropy = new byte[64];
Random.Shared.NextBytes(optionalEntropy);

// To protect:
byte[] encryptedData = ProtectedData.Protect(
    originalData,
    optionalEntropy,
    DataProtectionScope.CurrentUser);

// To unprotect:
byte[] decryptedData = ProtectedData.Unprotect(
    encryptedData,
    optionalEntropy,
    DataProtectionScope.CurrentUser);
```

## Main Types

<!-- The main types provided in this library -->

The main type provided by this library is:

* `System.Security.Cryptography.ProtectedData`

## Additional Documentation

<!-- Links to further documentation. Remove conceptual documentation if not available for the library. -->

* [Conceptual documentation](https://learn.microsoft.com/dotnet/standard/security/how-to-use-data-protection)
* [API documentation](https://learn.microsoft.com/dotnet/api/system.security.cryptography.protecteddata)

## Related Packages

<!-- The related packages associated with this package -->

* PKCS and CMS algorithms: [System.Security.Cryptography.Pkcs](https://www.nuget.org/packages/System.Security.Cryptography.Pkcs/)

## Feedback & Contributing

<!-- How to provide feedback on this package and contribute to it -->

System.Security.Cryptography.ProtectedData is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).

Target frameworks

netstandard2.0

Metadata

Published
Size
124.25 KB
Authors
Microsoft
License
MIT
Repository
https://github.com/dotnet/runtime commit 9ecbfd4f3f330dc9649bce49cb12570b19d48c87
Flags
SemVer 1
SHA512
h8j18ju7NzUzn37Z0yR8ndJSaWKwhcTepHF9IjQ2sMjPSIz62kY8Ph1Ee9Qln2lDLKb6pvIQWuVGVB7yjH7cmg==

Release notes

https://go.microsoft.com/fwlink/?LinkID=799421