117.info
人生若只如初见

C#中字符串加密和解密技术怎么实现

在C#中,可以使用一些加密算法来实现字符串加密和解密。常用的加密算法包括对称加密算法(如AES、DES、RC4等)和非对称加密算法(如RSA)。

下面是一个简单示例,演示如何使用AES算法进行字符串加密和解密:

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

public class AesEncryption
{
    private static readonly byte[] key = Encoding.UTF8.GetBytes("encryptionkey123"); // 16 bytes key for AES
    private static readonly byte[] iv = Encoding.UTF8.GetBytes("encryptioniv456"); // 16 bytes IV for AES

    public static string EncryptString(string plainText)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = key;
            aesAlg.IV = iv;
            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

            byte[] encrypted;

            using (var msEncrypt = new System.IO.MemoryStream())
            {
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    using (var swEncrypt = new System.IO.StreamWriter(csEncrypt))
                    {
                        swEncrypt.Write(plainText);
                    }
                    encrypted = msEncrypt.ToArray();
                }
            }
            return Convert.ToBase64String(encrypted);
        }
    }

    public static string DecryptString(string cipherText)
    {
        byte[] cipherBytes = Convert.FromBase64String(cipherText);

        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = key;
            aesAlg.IV = iv;
            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

            string plaintext = null;

            using (var msDecrypt = new System.IO.MemoryStream(cipherBytes))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (var srDecrypt = new System.IO.StreamReader(csDecrypt))
                    {
                        plaintext = srDecrypt.ReadToEnd();
                    }
                }
            }
            return plaintext;
        }
    }

    public static void Main()
    {
        string original = "Hello, world!";
        string encrypted = EncryptString(original);
        string decrypted = DecryptString(encrypted);

        Console.WriteLine("Original: {0}", original);
        Console.WriteLine("Encrypted: {0}", encrypted);
        Console.WriteLine("Decrypted: {0}", decrypted);
    }
}

在上面的示例中,我们使用了AES算法来加密和解密字符串。首先,我们需要定义一个16字节的密钥和初始向量IV,然后使用这些参数创建一个Aes实例。接着,我们使用CreateEncryptor方法创建一个加密器,并使用CreateDecryptor方法创建一个解密器。最后,我们可以分别使用加密器和解密器来加密和解密字符串。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe091AzsIBgVWDFI.html

推荐文章

  • c++ csdn 能获取最新技术资讯吗

    是的,通过CSDN可以获取C++的最新技术资讯。CSDN专业的中文IT技术社区,提供了丰富的技术资源,包括C++相关的最新技术资讯、公开课、精品课、电子书等。以下是一...

  • c# gettype对代码维护有何影响

    GetType() 是 C# 中的一个方法,用于获取一个对象的类型信息。它对代码维护有以下几个方面的影响: 可读性:使用 GetType() 可以提高代码的可读性,因为它明确地...

  • c# gettype能获取哪些接口信息

    在C#中,GetType()方法用于获取一个对象的类型信息。当你对一个对象调用GetType()方法时,它会返回一个表示该对象类型的Type对象。通过这个Type对象,你可以获取...

  • c++ coroutine适用于高性能计算吗

    C++20 引入了协程(coroutines),它们是一种支持异步编程和协作式多任务的机制。协程在高性能计算(HPC)领域确实有一些潜在的应用,但它们是否适用取决于具体的...

  • C#中如何进行字符串IO操作

    在C#中进行字符串IO操作,可以使用以下代码示例: 写入字符串到文件: string text = "Hello, World!";
    string path = "test.txt"; // 写入文件
    File....

  • C#中StringReader和StringWriter怎么使用

    StringReader和StringWriter是C#中用于从字符串中读取数据和向字符串中写入数据的类。以下是它们的基本用法示例:
    使用StringReader从字符串中读取数据:

  • C#如何实现ICustomFormatter接口

    要实现ICustomFormatter接口,可以按照以下步骤进行操作: 创建一个类并实现ICustomFormatter接口,该接口包含一个方法:string Format(string format, object a...

  • C#如何自定义字符串格式化

    在C#中,您可以使用自定义格式字符串或自定义格式提供程序来自定义字符串格式化。以下是一些方法: 使用自定义格式字符串:您可以使用自定义格式字符串来定义如何...