C# 中的字符串加密和解密 [关闭]

作者:编程家 分类: c++ 时间:2025-04-30

C#中的字符串加密和解密

在C#中,字符串加密和解密是一种常见的数据安全处理方式。通过对敏感信息进行加密,可以保护数据的机密性,防止数据被未经授权的人员访问。而解密则是将被加密的字符串还原为原始的明文信息。

字符串加密的常用算法

在C#中,有多种常用的字符串加密算法可供选择,常见的包括MD5、SHA1、AES和DES等。这些算法都具有不同的特点和用途,可以根据实际需求选择合适的算法进行加密操作。

MD5加密算法

MD5是一种常用的哈希算法,它将任意长度的消息摘要生成固定长度的哈希值,通常为32位的16进制字符串。MD5加密是不可逆的,即无法通过哈希值还原原始数据。下面是一个示例代码,演示了在C#中使用MD5加密字符串的方法:

csharp

using System;

using System.Security.Cryptography;

using System.Text;

public class MD5Example

{

public static string GetMD5Hash(string input)

{

using (MD5 md5Hash = MD5.Create())

{

byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

StringBuilder sBuilder = new StringBuilder();

for (int i = 0; i < data.Length; i++)

{

sBuilder.Append(data[i].ToString("x2"));

}

return sBuilder.ToString();

}

}

public static bool VerifyMD5Hash(string input, string hash)

{

string hashOfInput = GetMD5Hash(input);

StringComparer comparer = StringComparer.OrdinalIgnoreCase;

if (0 == comparer.Compare(hashOfInput, hash))

{

return true;

}

else

{

return false;

}

}

public static void Main()

{

string originalString = "Hello, world!";

string md5Hash = GetMD5Hash(originalString);

Console.WriteLine($"原始字符串: {originalString}");

Console.WriteLine($"MD5哈希值: {md5Hash}");

Console.WriteLine($"验证结果: {VerifyMD5Hash(originalString, md5Hash)}");

}

}

SHA1加密算法

SHA1是一种更安全的哈希算法,它生成的哈希值长度为40位的16进制字符串。与MD5类似,SHA1也是不可逆的。下面是一个示例代码,演示了在C#中使用SHA1加密字符串的方法:

csharp

using System;

using System.Security.Cryptography;

using System.Text;

public class SHA1Example

{

public static string GetSHA1Hash(string input)

{

using (SHA1 sha1Hash = SHA1.Create())

{

byte[] data = sha1Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

StringBuilder sBuilder = new StringBuilder();

for (int i = 0; i < data.Length; i++)

{

sBuilder.Append(data[i].ToString("x2"));

}

return sBuilder.ToString();

}

}

public static bool VerifySHA1Hash(string input, string hash)

{

string hashOfInput = GetSHA1Hash(input);

StringComparer comparer = StringComparer.OrdinalIgnoreCase;

if (0 == comparer.Compare(hashOfInput, hash))

{

return true;

}

else

{

return false;

}

}

public static void Main()

{

string originalString = "Hello, world!";

string sha1Hash = GetSHA1Hash(originalString);

Console.WriteLine($"原始字符串: {originalString}");

Console.WriteLine($"SHA1哈希值: {sha1Hash}");

Console.WriteLine($"验证结果: {VerifySHA1Hash(originalString, sha1Hash)}");

}

}

AES加密算法

AES是一种高级加密标准,它使用对称密钥加密算法,能够对大块数据进行高效加密处理。AES加密算法支持不同的密钥长度,包括128位、192位和256位等。下面是一个示例代码,演示了在C#中使用AES加密字符串的方法:

csharp

using System;

using System.Security.Cryptography;

using System.Text;

public class AESExample

{

public static string AESEncrypt(string input, string key)

{

byte[] keyBytes = Encoding.UTF8.GetBytes(key);

byte[] inputBytes = Encoding.UTF8.GetBytes(input);

using (Aes aes = Aes.Create())

{

aes.Key = keyBytes;

aes.Mode = CipherMode.ECB;

aes.Padding = PaddingMode.PKCS7;

ICryptoTransform encryptor = aes.CreateEncryptor();

byte[] encryptedBytes = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);

return Convert.ToBase64String(encryptedBytes);

}

}

public static string AESDecrypt(string encryptedInput, string key)

{

byte[] keyBytes = Encoding.UTF8.GetBytes(key);

byte[] encryptedBytes = Convert.FromBase64String(encryptedInput);

using (Aes aes = Aes.Create())

{

aes.Key = keyBytes;

aes.Mode = CipherMode.ECB;

aes.Padding = PaddingMode.PKCS7;

ICryptoTransform decryptor = aes.CreateDecryptor();

byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);

return Encoding.UTF8.GetString(decryptedBytes);

}

}

public static void Main()

{

string originalString = "Hello, world!";

string key = "0123456789ABCDEF";

string encryptedString = AESEncrypt(originalString, key);

string decryptedString = AESDecrypt(encryptedString, key);

Console.WriteLine($"原始字符串: {originalString}");

Console.WriteLine($"加密后字符串: {encryptedString}");

Console.WriteLine($"解密后字符串: {decryptedString}");

}

}

通过使用C#中的字符串加密和解密算法,可以有效保护敏感数据的安全性。无论是MD5、SHA1还是AES,都提供了不同级别的数据保护机制。在实际应用中,应根据具体需求选择合适的加密算法,并遵循最佳实践来确保数据的安全性。