⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsa.cs

📁 这个是C#编写的DES加解密和RSA加解密的成学
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Security;
using System.Security.Cryptography;
using System.IO;

namespace EncryptAndDecrypt
{
    class RSA
    {
        /// <summary>
        /// RSA加密文件
        /// </summary>
        /// <param name="filePath">待加密文件</param>
        /// <param name="outPath">加密后的文件</param>
        /// <returns></returns>
        public static bool EncryptFile(string filePath, string outPath)
        {
            try
            {
                //初始化RSA加密
                //new   RSACryptoServiceProvider(512);   
                RSACryptoServiceProvider rsac = new RSACryptoServiceProvider();
                //字节缓冲区定为64(密钥为1024) 
                byte[] src = new byte[64];
                //filePath是要加密的文件路径   
                FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                //outPath文件路径存储的是加密之后的数据   
                FileStream res = new FileStream(outPath, FileMode.Create, FileAccess.Write);
                int len;
                //加密   
                while ((len = fs.Read(src, 0, 64)) > 0)
                {
                    byte[] temp = new byte[len];
                    Array.Copy(src, 0, temp, 0, len);
                    temp = rsac.Encrypt(temp, false);
                    res.Write(temp, 0, temp.Length);
                }
                fs.Close();
                res.Close();
                //存储密钥到文件,以便解密用。   
                StreamWriter sw = new StreamWriter("RSA.key");
                sw.Write(rsac.ToXmlString(true));
                sw.Close();
                return true;//加密成功
            }
            catch
            {
                return false;//加密失败
            }
            
        }
        /// <summary>
        /// RSA解密文件
        /// </summary>
        /// <param name="InputFilename">待解密文件</param>
        /// <param name="OutputFilename">解密后的文件</param>
        /// <returns></returns>
        public static bool DecryptFile(string InputFilename, string OutputFilename)
        {
            try
            {
                RSACryptoServiceProvider rsac = new RSACryptoServiceProvider();
                //读密钥   
                StreamReader sr = new StreamReader("RSA.key");
                String str = sr.ReadToEnd();
                sr.Close();
                rsac.FromXmlString(str);

                byte[] src = new byte[128];

                FileStream fs = new FileStream(InputFilename, FileMode.Open, FileAccess.Read);
                FileStream res = new FileStream(OutputFilename, FileMode.Create, FileAccess.Write);
                int len;
                //解密   
                while ((len = fs.Read(src, 0, 128)) > 0)
                {
                    byte[] temp = new byte[len];
                    Array.Copy(src, 0, temp, 0, len);
                    temp = rsac.Decrypt(temp, false);
                    res.Write(temp, 0, temp.Length);
                }
                fs.Close();
                res.Close();
                return true;//加密成功
            }
            catch (System.Exception e)
            {
                return false;//加密失败
            }
            
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -