首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘C#数据加密:轻松掌握多种加密技术,保障数据安全!

发布于 2025-06-22 11:04:26
0
573

在当今这个信息时代,数据安全显得尤为重要。C作为微软开发的一种高级编程语言,提供了多种数据加密技术,以帮助开发者保障数据安全。本文将详细介绍C中的加密技术,包括对称加密、非对称加密和哈希算法,帮助读者...

在当今这个信息时代,数据安全显得尤为重要。C#作为微软开发的一种高级编程语言,提供了多种数据加密技术,以帮助开发者保障数据安全。本文将详细介绍C#中的加密技术,包括对称加密、非对称加密和哈希算法,帮助读者轻松掌握这些技术。

一、对称加密

1.1 对称加密概述

对称加密,又称单密钥加密,指的是使用相同的密钥进行加密和解密。这种加密方式速度快,但密钥的安全管理是关键。

1.2 C#中的对称加密

在C#中,System.Security.Cryptography命名空间提供了多种对称加密算法,如DES、AES和Rijndael等。

1.2.1 AES加密

以下是一个使用AES加密算法的示例代码:

using System;
using System.Security.Cryptography;
using System.Text;
class Program
{ static void Main() { string original = "Hello, World!"; string key = "1234567890123456"; string iv = "1234567890123456"; byte[] encrypted = EncryptAES(original, key, iv); string decrypted = DecryptAES(encrypted, key, iv); Console.WriteLine("Original: " + original); Console.WriteLine("Encrypted: " + Convert.ToBase64String(encrypted)); Console.WriteLine("Decrypted: " + decrypted); } static byte[] EncryptAES(string plainText, string key, string iv) { byte[] encrypted; using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Encoding.UTF8.GetBytes(key); aesAlg.IV = Encoding.UTF8.GetBytes(iv); ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } return encrypted; } static string DecryptAES(byte[] cipherText, string key, string iv) { string plaintext = null; using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Encoding.UTF8.GetBytes(key); aesAlg.IV = Encoding.UTF8.GetBytes(iv); ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; }
}

二、非对称加密

2.1 非对称加密概述

非对称加密,又称双密钥加密,指的是使用公钥和私钥进行加密和解密。这种加密方式保证了密钥的安全性。

2.2 C#中的非对称加密

在C#中,System.Security.Cryptography命名空间提供了RSA和非对称加密算法。

2.2.1 RSA加密

以下是一个使用RSA加密算法的示例代码:

using System;
using System.Security.Cryptography;
using System.Text;
class Program
{ static void Main() { string original = "Hello, World!"; byte[] publicKey = Encoding.UTF8.GetBytes("-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD......-----END PUBLIC KEY-----\n"); byte[] privateKey = Encoding.UTF8.GetBytes("-----BEGIN PRIVATE KEY-----\nMIIBUQIBADANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE.....-----END PRIVATE KEY-----\n"); byte[] encrypted = EncryptRSA(original, publicKey); string decrypted = DecryptRSA(encrypted, privateKey); Console.WriteLine("Original: " + original); Console.WriteLine("Encrypted: " + Convert.ToBase64String(encrypted)); Console.WriteLine("Decrypted: " + decrypted); } static byte[] EncryptRSA(string plainText, byte[] publicKey) { byte[] encrypted; using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(publicKey); encrypted = rsa.Encrypt(Encoding.UTF8.GetBytes(plainText), false); } return encrypted; } static string DecryptRSA(byte[] cipherText, byte[] privateKey) { string plaintext = null; using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(privateKey); byte[] decrypted = rsa.Decrypt(cipherText, false); plaintext = Encoding.UTF8.GetString(decrypted); } return plaintext; }
}

三、哈希算法

3.1 哈希算法概述

哈希算法,又称散列算法,是一种将任意长度的数据转换成固定长度的字符串的算法。这种算法广泛应用于密码存储、数据校验等领域。

3.2 C#中的哈希算法

在C#中,System.Security.Cryptography命名空间提供了多种哈希算法,如MD5、SHA1和SHA256等。

3.2.1 SHA256加密

以下是一个使用SHA256加密算法的示例代码:

using System;
using System.Security.Cryptography;
using System.Text;
class Program
{ static void Main() { string original = "Hello, World!"; byte[] hash = ComputeHashSHA256(original); Console.WriteLine("Original: " + original); Console.WriteLine("Hash: " + Convert.ToBase64String(hash)); } static byte[] ComputeHashSHA256(string plainText) { byte[] hash; using (SHA256 sha256 = SHA256.Create()) { hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(plainText)); } return hash; }
}

四、总结

本文介绍了C#中的多种数据加密技术,包括对称加密、非对称加密和哈希算法。通过对这些技术的学习和实践,开发者可以更好地保障数据安全。在实际应用中,应根据具体需求选择合适的加密技术,以确保数据安全。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流