C#字符串连接和加密代码详解
使用C#进行字符串连接
在C#中,字符串连接是常见的操作。可以使用"+"运算符将两个字符串连接起来。例如,可以将一个变量或者一个字符串文本与一个变量进行连接:
string str1 = "Hello";
string str2 = "World";
string result = str1 + " " + str2;
Console.WriteLine(result); // 输出:Hello World
还可以使用String.Concat()方法将多个字符串连接起来:
string str1 = "Hello";
string str2 = "World";
string result = String.Concat(str1, " ", str2);
Console.WriteLine(result); // 输出:Hello World
使用C#进行字符串加密
在某些情况下,我们可能需要对字符串进行加密,以增强数据的安全性。C#提供了多种字符串加密的方式,包括MD5、SHA1、AES等。
MD5加密
MD5是一种常用的哈希算法,可以将任意长度的消息转换成一个固定长度的128位hash值。以下是使用MD5对字符串进行加密的示例代码:
string str = "Hello World";
using (MD5 md5 = MD5.Create())
{
byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("x2"));
}
string encryptedString = sb.ToString();
Console.WriteLine(encryptedString); // 输出加密后的字符串
}
SHA1加密
SHA1是一种更安全的哈希算法,可以将任意长度的消息转换成一个固定长度的160位hash值。以下是使用SHA1对字符串进行加密的示例代码:
string str = "Hello World";
using (SHA1 sha1 = SHA1.Create())
{
byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(str));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("x2"));
}
string encryptedString = sb.ToString();
Console.WriteLine(encryptedString); // 输出加密后的字符串
}
AES加密
AES是一种对称加密算法,可用于加密和解密数据。以下是使用AES对字符串进行加密和解密的示例代码:
static string EncryptString(string plainText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(cs))
{
writer.Write(plainText);
}
byte[] encryptedBytes = ms.ToArray();
return Convert.ToBase64String(encryptedBytes);
}
}
}
}
static string DecryptString(string encryptedText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(encryptedBytes))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader reader = new StreamReader(cs))
{
return reader.ReadToEnd();
}
}
}
}
}
string str = "Hello World";
string key = "mysecretkey";
string iv = "mysecretiv";
string encryptedString = EncryptString(str, key, iv);
Console.WriteLine(encryptedString); // 输出加密后的字符串
string decryptedString = DecryptString(encryptedString, key, iv);
Console.WriteLine(decryptedString); // 输出解密后的字符串
以上是使用C#进行字符串连接和加密的一些常用方法,可以根据实际需求选择合适的方法。在实际开发中,也可以根据具体的业务场景,结合其他加密算法和安全措施,以保障数据的安全性。
谢谢您阅读本篇文章,希望能对您理解C#字符串连接和加密有所帮助。