下面是一个基于 ProtectedData 类和 DataProtectionScope 的静态类 Cypher 的设计,用于加密和解密数据。该类封装了加密和解密的逻辑,并提供了简单易用的接口。
设计目标
封装加密和解密逻辑:
提供静态方法 Encrypt 和 Decrypt,分别用于加密和解密数据。
支持字符串和字节数组的加密和解密。
支持自定义熵:
允许用户提供可选的熵(optionalEntropy)以增加安全性。
异常处理:
捕获并处理加密和解密过程中可能抛出的异常。
灵活性:
支持 DataProtectionScope.CurrentUser 和 DataProtectionScope.LocalMachine。
实现代码
using System;
using System.Security.Cryptography;
using System.Text;
public static class Cypher
{
/// <summary>
/// 加密字符串。
/// </summary>
/// <param name="data">要加密的字符串。</param>
/// <param name="scope">数据保护范围(默认当前用户)。</param>
/// <param name="optionalEntropy">可选的熵(增加安全性)。</param>
/// <returns>加密后的 Base64 字符串。</returns>
public static string Encrypt(string data, DataProtectionScope scope = DataProtectionScope.CurrentUser, byte[] optionalEntropy = null)
{
if (string.IsNullOrEmpty(data))
throw new ArgumentNullException(nameof(data));
try
{
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
byte[] encryptedBytes = ProtectedData.Protect(d