using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace 加密
{
class Program
{
static void Main(string[] args)
{
//RSA
//var dicKey = RSAHelper.GetKey();
//Console.WriteLine($"{dicKey["PublicKey"]}\r\n{dicKey["PrivateKey"]}");
//string strText = "aaabbbcc";
//Console.WriteLine("要加密的字符串是:{0}", strText);
//string str1 = RSAHelper.Encrypt(strText, dicKey["PublicKey"]);
//Console.WriteLine("加密后的字符串:{0}", str1);
//string str2 = RSAHelper.Decrypt(str1, dicKey["PrivateKey"]);
//Console.WriteLine("解密后的字符串:{0}", str2);
//AES
string password = "abcAE#$M&*987";
Console.WriteLine($"原始密码为:{password} ");
// AES的key支持128位,最大支持256位。256位需要32个字节。
//string key = "1234567890qwerty1234567890qwerty";//32字节
string key = AESHelper.GetRandomStr(32, true, true, true, true);
var EncryptStr = AESHelper.Encrypt(key, password);
Console.WriteLine($"使用密钥:{key} 为原密码:{password} 加密");
Console.WriteLine($"得到密文:{EncryptStr}");
Console.WriteLine($"使用密钥:{key} 为密文:{EncryptStr} 解密");
var realPwd = AESHelper.Decrypt(key, EncryptStr);
Console.WriteLine($"得到原密码:{realPwd}");
}
}
public static class RSAHelper
{
/// <summary>
/// 使用公钥加密
/// </summary>
/// <returns></returns>
public static string Encrypt(string text, string publicKey)
{
byte[] byteEncrypt;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.ImportCspBlob(Convert.FromBase64String(publicKey));
C#对称加密和非对称加密(AES和RSA)
最新推荐文章于 2024-08-16 10:26:20 发布
本文详细探讨了C#中如何实现对称加密的AES算法与非对称加密的RSA算法,包括加密解密流程、密钥管理及在实际应用中的注意事项。通过对这两种加密方式的理解,读者将能更好地掌握密码学原理,并了解如何在项目中安全地使用加密技术。
摘要由CSDN通过智能技术生成