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

📄 des.cs

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

namespace EncryptAndDecrypt
{
    class DES
    {
        [System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]
        public static extern bool ZeroMemory(IntPtr Destination, int Length);
        public static string GenerateKey()
        {
            // Create an instance of Symetric Algorithm. Key and IV is generated automatically.
            DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();

            // Use the Automatically generated key for Encryption. 
            return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
        }
        #region
        ///   <summary>   
        ///   DES加密文件   
        ///   </summary>   
        ///   <param   name="inFilePath">待加密文件</param>   
        ///   <param   name="outFilePath">加密后的文件</param>   
        ///   <param   name="encryptKey">加密密钥</param>   
        ///   <returns></returns>   
        #endregion
        public static bool EncryptFile(string inFilePath, string outFilePath, string encryptKey)
        {

            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                //读入的流   
                FileStream inFs = new FileStream(inFilePath, FileMode.Open, FileAccess.Read);
                //待写的流   
                FileStream outFs = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                outFs.SetLength(0);
                //创建一个变量来帮助读写   
                byte[] byteIn = new byte[100];   //临时存放读入的流   
                long readLen = 0;                             //读入流的长度   
                long totalLen = inFs.Length;         //总共读入流的长度   
                int everyLen;                                     //每次读入流动长度   
                //读入InFs,加密后写入OutFs   
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(outFs, des.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                while (readLen < totalLen)
                {
                    everyLen = inFs.Read(byteIn, 0, 100);
                    encStream.Write(byteIn, 0, everyLen);
                    readLen = readLen + everyLen;
                }
                encStream.Close();
                outFs.Close();
                inFs.Close();
                return true;//加密成功   
            }
            catch
            {
                return false;//加密失败     
            }
        }

        #region
        ///   <summary>   
        ///   DES解密文件   
        ///   </summary>   
        ///   <param   name="inFilePath">待解密文件</param>   
        ///   <param   name="outFilePath">待加密文件</param>   
        ///   <param   name="decryptKey">解密密钥</param>   
        ///   <returns></returns> 
        #endregion
        public static bool DecryptFile(string inFilePath, string outFilePath, string decryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                byte[] rgbIV = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                //读入的流   
                FileStream inFs = new FileStream(inFilePath, FileMode.Open, FileAccess.Read);
                //待写的流   
                FileStream outFs = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                outFs.SetLength(0);
                //创建一个变量来帮助读写   
                byte[] byteIn = new byte[100];   //临时存放读入的流   
                long readLen = 0;                             //读入流的长度   
                long totalLen = inFs.Length;         //总共读入流的长度   
                int everyLen;                                     //每次读入流动长度   
                //读入InFs,解密后写入OutFs   
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(outFs, des.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                while (readLen < totalLen)
                {
                    everyLen = inFs.Read(byteIn, 0, 100);
                    encStream.Write(byteIn, 0, everyLen);
                    readLen = readLen + everyLen;
                }
                encStream.Close();
                outFs.Close();
                inFs.Close();
                return true;//解密成功   
            }
            catch
            {
                return false;//解密失败     
            }
        }
    }
}

⌨️ 快捷键说明

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