前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.NET 中实现数据的加密存储

.NET 中实现数据的加密存储

原创
作者头像
软件架构师Michael
发布2025-02-07 14:02:28
发布2025-02-07 14:02:28
1180
举报

在.NET 中实现数据的加密存储可以使用System.Security.Cryptography命名空间下的加密算法。以下是一个使用 AES(高级加密标准)算法进行数据加密存储到文件,并从文件读取解密数据的示例代码:

代码语言:csharp
复制
using System;
using System.IO;
using System.Security.Cryptography;

class Program
{
    static void Main()
    {
        // 要加密存储的数据
        string dataToEncrypt = "这是需要加密存储的敏感数据";
        // 加密密钥,注意密钥的安全性和保密性
        byte[] key = new byte[32]; 
        byte[] iv = new byte[16]; 
        // 使用RNGCryptoServiceProvider生成随机密钥和初始化向量
        using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
        {
            rng.GetBytes(key);
            rng.GetBytes(iv);
        }
        // 加密后的数据存储路径
        string encryptedFilePath = "encryptedData.txt"; 

        // 执行加密操作并存储到文件
        EncryptAndSave(dataToEncrypt, key, iv, encryptedFilePath); 

        Console.WriteLine("数据已加密存储到文件。");

        // 从文件读取并解密数据
        string decryptedData = DecryptFromFile(encryptedFilePath, key, iv); 
        Console.WriteLine("解密后的数据: " + decryptedData);
    }

    static void EncryptAndSave(string data, byte[] key, byte[] iv, string filePath)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = key;
            aesAlg.IV = iv;

            // 创建加密器
            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

            // 创建内存流用于写入加密后的数据
            using (MemoryStream msEncrypt = new MemoryStream())
            {
                // 创建加密流,将加密器和内存流关联
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    // 创建StreamWriter用于写入数据到加密流
                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                    {
                        // 写入要加密的数据
                        swEncrypt.Write(data);
                    }
                }
                // 将内存流中的加密数据写入文件
                byte[] encrypted = msEncrypt.ToArray();
                File.WriteAllBytes(filePath, encrypted);
            }
        }
    }

    static string DecryptFromFile(string filePath, byte[] key, byte[] iv)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = key;
            aesAlg.IV = iv;

            // 创建解密器
            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

            // 从文件读取加密数据
            byte[] encryptedData = File.ReadAllBytes(filePath);

            // 创建内存流用于读取加密数据
            using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
            {
                // 创建解密流,将解密器和内存流关联
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    // 创建StreamReader用于从解密流读取数据
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                    {
                        // 读取解密后的数据
                        return srDecrypt.ReadToEnd();
                    }
                }
            }
        }
    }
}

【小结】

不积跬步无以至千里,不积小流无以成江海。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档