C#对称加密和非对称加密(AES和RSA)

看看我

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));
             
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值