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

在C#中,可以使用一些加密算法来实现字符串加密和解密。常用的加密算法包括对称加密算法(如AES、DES、RC4等)和非对称加密算法(如RSA)。下面是一个简单示例,演示如何使用AES算法进行字符串加密和解密:using System;using System.Security.Cryptography;using System.Text;public class AesEncryption

在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方法创建一个解密器。最后,我们可以分别使用加密器和解密器来加密和解密字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1010904.html

(0)
派派
上一篇 2024-04-29
下一篇 2024-04-29

相关推荐

  • 域名重定向如何解决(浏览器域名重定向怎么设置)

    域名重定向如何解决,浏览器域名重定向怎么设置内容导航:域名重定向咋解决qq空间域名重定向怎么解决淘宝网址被域名重定向了要怎么解决呢域名重定向怎么一、域名重定向咋解决域名重定向是定向到一个地址上面的,通

    2022-04-14
    0
  • Spark中的持久化机制及其优势

    Spark中的持久化机制是通过RDD的persist()方法来实现的,它可以将RDD中的数据持久化到内存或磁盘中,以便在后续的计算中重复使用。持久化机制的优势包括:提高性能:通过将RDD的数据持久化到内存中,可以避免重复计算同一份数据,从而提高计算效率。减少数据丢失风险:将数据持久化到磁盘中可以避免在计算过程中数据丢失的风险,保证数据的完整性。优化内存使用:持久化机制可以控制RDD在内存中的存储级

    2024-03-05
    0
  • sqlite导入数据的方法有哪些

    在SQLite中,可以通过以下方法导入数据:使用SQLite的命令行工具导入数据:可以使用sqlite3命令行工具,通过执行SQL语句或导入文件的方式导入数据。使用SQLite的命令行导入工具sqlite3.exe:可以使用sqlite3.exe工具,通过执行导入命令导入数据。使用SQLite的GUI工具导入数据:可以使用SQLite的GUI工具,如DB Browser for SQLite等,通

    2024-04-10
    0
  • java aop是怎么实现的

    Java AOP(Aspect-Oriented Programming)是一种编程范式,用于将横切关注点(cross-cutting concerns)与主要业务逻辑分离开来。AOP的实现方式有多种,常见的方式包括静态代理、动态代理、字节码增强等。在Java中,AOP通常通过以下步骤实现:1. 定义切面(Aspect):切面是一个包含了横切关注点的类,它定义了在主要业务逻辑执行前、执行后或执行期

    2024-01-16
    0
  • 三星s23和小米13哪个好

    三星s23和小米13都属于小屏旗舰机,而且又都是大品牌,因此很多用户都非常的好奇这两款手机之间的区别是什么样,目前来看的话小米13的性价比要更好一些。三星s23和小米13哪个好答:小米13要更好一些。 一、外观 三星S23:玻璃后盖+金属中框的组合,厚度为7.6mm、重量为167克小米13:玻璃后盖+金属中框的组合,还有一个纳米皮可选择,厚度为7.98mm、重量为189克总结:两者其实不相上下,如

    2024-02-28
    0
  • 域名指什么意思(域名名称什么意思)

    域名指什么意思,域名名称什么意思内容导航:域名是什么意思呢域名域名是什么意思域名的意思是什么域名是指什么一、域名是什么意思呢域名就是网址,通俗地讲就是企事业单位和公司在因特网上的名称。详细↓域名在国际互连网上是国际通行的,全世界都

    2022-04-23
    0

发表回复

登录后才能评论