C#字符串加密与解密

1.引用:

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

2.代码

static string encryptKey = "abcd";//字符串加密密钥(注意:密钥只能是4位)

public string Encrypt(string str)
{//加密字符串

try
{
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//密钥
byte[] data = Encoding.Unicode.GetBytes(str);//待加密字符串

DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//加密、解密对象
MemoryStream MStream = new MemoryStream();//内存流对象

//用内存流实例化加密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length);//向加密流中写入数据
CStream.FlushFinalBlock();//将数据压入基础流
byte[] temp = MStream.ToArray();//从内存流中获取字节序列
CStream.Close();//关闭加密流
MStream.Close();//关闭内存流

return Convert.ToBase64String(temp);//返回加密后的字符串
}
catch
{
return str;
}
}

public string Decrypt(string str)
{//解密字符串

try
{
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//密钥
byte[] data = Convert.FromBase64String(str);//待解密字符串

DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//加密、解密对象
MemoryStream MStream = new MemoryStream();//内存流对象

//用内存流实例化解密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length);//向加密流中写入数据
CStream.FlushFinalBlock();//将数据压入基础流
byte[] temp = MStream.ToArray();//从内存流中获取字节序列
CStream.Close();//关闭加密流
MStream.Close();//关闭内存流

return Encoding.Unicode.GetString(temp);//返回解密后的字符串
}
catch
{
return str;
}
}

参考:https://www.cnblogs.com/nb08611033/p/9183198.html

转载于:https://www.cnblogs.com/nn1314/p/10893743.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,可以使用许多不同的加密算法来加密解密字符串。这里介绍两种常用的加密算法:AES 和 RSA。 AES 加密解密字符串的代码示例: ```csharp using System; using System.IO; using System.Security.Cryptography; using System.Text; class AesExample { static void Main() { string original = "Hello World!"; byte[] key = new byte[32]; byte[] iv = new byte[16]; using (Aes aes = Aes.Create()) { aes.Key = key; aes.IV = iv; // Encrypt the string to an array of bytes. byte[] encrypted = EncryptStringToBytes_Aes(original, aes.Key, aes.IV); // Decrypt the bytes to a string. string roundtrip = DecryptStringFromBytes_Aes(encrypted, aes.Key, aes.IV); //Display the original data and the decrypted data. Console.WriteLine("Original: {0}", original); Console.WriteLine("Round Trip: {0}", roundtrip); } } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV) { // Check arguments. if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); byte[] encrypted; // Create an Aes object // with the specified key and IV. using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV; // Create an encryptor to perform the stream transform. ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); // Create the streams used for encryption. using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { //Write all data to the stream. swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } // Return the encrypted bytes from the memory stream. return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) { // Check arguments. if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); // Declare the string used to hold // the decrypted text. string plaintext = null; // Create an Aes object // with the specified key and IV. using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV; // Create a decryptor to perform the stream transform. ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); // Create the streams used for decryption. using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { // Read the decrypted bytes from the decrypting stream // and place them in a string. plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; } } ``` RSA 加密解密字符串的代码示例: ```csharp using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { // Create a new instance of RSACryptoServiceProvider RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); //Export the key information to an RSAParameters object. //Pass false to export the public key information or pass //true to export public and private key information. RSAParameters RSAParams = rsa.ExportParameters(false); //Create some data to sign and verify. byte[] data = Encoding.UTF8.GetBytes("Data to Sign"); try { //Sign the data using the private key. byte[] signature = SignData(data, RSAParams); //Verify the data using the public key. bool verified = VerifyData(data, signature, RSAParams); Console.WriteLine("Data verified: {0}", verified); } catch (CryptographicException e) { Console.WriteLine(e.Message); } } static byte[] SignData(byte[] data, RSAParameters RSAParams) { try { //Create a new instance of RSACryptoServiceProvider. using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { //Import the RSA key information. rsa.ImportParameters(RSAParams); //Sign the data. return rsa.SignData(data, SHA256.Create()); } } catch (CryptographicException e) { Console.WriteLine(e.Message); return null; } } static bool VerifyData(byte[] data, byte[] signature, RSAParameters RSAParams) { try { //Create a new instance of RSACryptoServiceProvider. using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { //Import the RSA key information. rsa.ImportParameters(RSAParams); //Verify the data. return rsa.VerifyData(data, SHA256.Create(), signature); } } catch (CryptographicException e) { Console.WriteLine(e.Message); return false; } } } ``` 请注意,这些示例代码只是演示如何使用 AES 和 RSA 加密解密字符串,并不一定适用于所有情况。在实际应用中,需要根据具体需求选择适当的加密算法和实现方式,并且需要采取额外的安全措施来保护加密密钥等敏感信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值