迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 C# 中加密和解密一个字符串

作者:迹忆客 最近更新:2024/01/03 浏览次数:

本教程将讨论使用 C# 加密和解密字符串的方法。


使用 C# 中的 AesManaged 类加密字符串

加密是将数据转换为密文的过程,因此任何未经授权的个人都无法访问数据。在本教程中,我们将使用高级加密标准(AES)算法对 C# 中的字符串进行加密和解密。AesManaged 类提供了使用 AES 算法对字符串进行加密和解密的方法。CreateEncryptor() 函数可以使用密钥加密数据。我们必须将字符串键传递给 CreateEncryptor() 函数。以下代码示例向我们展示了如何使用 C# 中的 CreateEncryptor() 函数根据 AES 算法对字符串进行加密。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace encrypt_decrypt_string {
  class Program {
    static string Encrypt() {
      try {
        string textToEncrypt = "WaterWorld";
        string ToReturn = "";
        string publickey = "12345678";
        string secretkey = "87654321";
        byte[] secretkeyByte = {};
        secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
        byte[] publickeybyte = {};
        publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
        MemoryStream ms = null;
        CryptoStream cs = null;
        byte[] inputbyteArray = System.Text.Encoding.UTF8.GetBytes(textToEncrypt);
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
          ms = new MemoryStream();
          cs = new CryptoStream(ms, des.CreateEncryptor(publickeybyte, secretkeyByte),
                                CryptoStreamMode.Write);
          cs.Write(inputbyteArray, 0, inputbyteArray.Length);
          cs.FlushFinalBlock();
          ToReturn = Convert.ToBase64String(ms.ToArray());
        }
        return ToReturn;
      } catch (Exception ex) {
        throw new Exception(ex.Message, ex.InnerException);
      }
    }
    static void Main(string[] args) {
      string encrypted = Encrypt();
      Console.WriteLine(encrypted);
    }
  }
}

输出:

6+PXxVWlBqcUnIdqsMyUHA==

在上面的代码中,我们以 publickeysecretkey 作为密钥对字符串 WaterWorld 进行了加密,并以加密字符串的形式返回了 6+PXxVWlBqcUnIdqsMyUHA==。两个密钥的长度必须至少为 8 个字符。


使用 C# 中的 AesManaged 类解密字符串

解密是将密文转换回原始数据,以便授权个人可以访问数据的过程。CreateDecryptor() 函数可以使用密钥解密数据。我们必须将字符串键传递给 CreateEncryptor() 函数。密钥必须与 CreateDecryptor() 函数中使用的密钥相同。以下代码示例向我们展示了如何使用 C# 中的 CreateDecryptor() 函数根据 AES 算法对字符串进行加密。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
  class Program {
    static string Decrypt() {
      try {
        string textToDecrypt = "6+PXxVWlBqcUnIdqsMyUHA==";
        string ToReturn = "";
        string publickey = "12345678";
        string secretkey = "87654321";
        byte[] privatekeyByte = {};
        privatekeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
        byte[] publickeybyte = {};
        publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
        MemoryStream ms = null;
        CryptoStream cs = null;
        byte[] inputbyteArray = new byte[textToDecrypt.Replace(" ", "+").Length];
        inputbyteArray = Convert.FromBase64String(textToDecrypt.Replace(" ", "+"));
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
          ms = new MemoryStream();
          cs = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte),
                                CryptoStreamMode.Write);
          cs.Write(inputbyteArray, 0, inputbyteArray.Length);
          cs.FlushFinalBlock();
          Encoding encoding = Encoding.UTF8;
          ToReturn = encoding.GetString(ms.ToArray());
        }
        return ToReturn;
      } catch (Exception ae) {
        throw new Exception(ae.Message, ae.InnerException);
      }
    }
    static void Main(string[] args) {
      string decrypted = Decrypt();
      Console.WriteLine(decrypted);
    }
  }
}

输出:

WaterWorld

在上面的代码中,我们将上一示例中的加密字符串 6+PXxVWlBqcUnIdqsMyUHA== 转换回其原始形式 WaterWorld,并以 publickeysecretkey 作为密钥。该键必须与上一个示例中使用的键相同,此方法才能起作用。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C# 中将 Long 转换为整数

发布时间:2024/01/03 浏览次数:68 分类:编程语言

有两种主要方法可用于将长变量转换为 C# 中的整数变量,即类型转换方法和 Convert.ToInt32()函数。

在 C# 中将 Int 转换为十六进制

发布时间:2024/01/03 浏览次数:156 分类:编程语言

ToString()函数可用于将整数值转换为十六进制字符串,而 Convert.ToInt32()函数可用于将十六进制字符串转换为 C# 中的整数值。

在 C# 中读取 JSON 文件

发布时间:2024/01/03 浏览次数:146 分类:编程语言

Json.net 命名空间内的 JsonConvert 类可用于在 C# 中对 JSON 文件执行读取和写入操作。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便