zoukankan      html  css  js  c++  java
  • C# DES 加解密

    using System;
    using System.Text;
    using System.Security.Cryptography;
    using System.Diagnostics;
    using System.IO;
    using System.Reflection;
    using System.Windows.Forms;
    
    namespace FirstEliteCSFileEncoder
    {
        class Program
        {
            /// <summary>
            /// DESEncrypt加密解密算法。
            /// </summary>
            public class DESEncoder
            {
                public DESEncoder(string key)
                {
                    this.Key = key;
                }
    
                /// <summary>
                /// 对称加密解密的密钥
                /// </summary>
                public string Key { get; private set; }
    
                /// <summary>
                /// DES加密
                /// </summary>
                /// <param name="encryptString"></param>
                /// <returns></returns>
                public string EncryptString(string encryptString)
                {
                    byte[] keyBytes = Encoding.UTF8.GetBytes(this.Key.Substring(0, 8));
                    byte[] keyIV = keyBytes;
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                    DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                    MemoryStream mStream = new MemoryStream();
                    CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
                    cStream.Write(inputByteArray, 0, inputByteArray.Length);
                    cStream.FlushFinalBlock();
                    return Convert.ToBase64String(mStream.ToArray());
                }
    
                /// <summary>
                /// DES解密
                /// </summary>
                /// <param name="decryptString"></param>
                /// <returns></returns>
                public string DecryptString(string decryptString)
                {
                    byte[] keyBytes = Encoding.UTF8.GetBytes(this.Key.Substring(0, 8));
                    byte[] keyIV = keyBytes;
                    byte[] inputByteArray = Convert.FromBase64String(decryptString);
                    DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                    MemoryStream mStream = new MemoryStream();
                    CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
                    cStream.Write(inputByteArray, 0, inputByteArray.Length);
                    cStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(mStream.ToArray());
                }
    
                public bool EncryptFile(string filepath)
                {
                    try
                    {
                        var bytes = File.ReadAllBytes(filepath);
                        File.WriteAllBytes(filepath, Encoding.UTF8.GetBytes(this.EncryptString(Convert.ToBase64String(bytes))));
                        return true;
                    }
                    catch (Exception ex)
                    {
                        Debug.Print(ex.ToString());
                        return false;
                    }
                }
    
                public bool DecryptFile(string filepath)
                {
                    try
                    {
                        var bytes = File.ReadAllBytes(filepath);
                        File.WriteAllBytes(filepath, Convert.FromBase64String(this.DecryptString(Encoding.UTF8.GetString(bytes))));
                        return true;
                    }
                    catch (Exception ex)
                    {
                        Debug.Print(ex.ToString());
                        return false;
                    }
                }
            }
    
            public static bool LoadAssembly(string filepath)
            {
                try
                {
                    var encoder = new DESEncoder("$u&CIbzz");
                    var bytes = File.ReadAllBytes(filepath);
                    var assembly = Assembly.Load(Convert.FromBase64String(encoder.DecryptString(Encoding.UTF8.GetString(bytes))));
                    MessageBox.Show(assembly.FullName);
                    return true;
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.ToString());
                    return false;
                }
            }
    
            static void Main(string[] args)
            {
                LoadAssembly(@"");
                var encoder = new DESEncoder("$u&CIbzz");
                encoder.EncryptFile(@"C:UsersknifeDesktop翻译.txt");
                encoder.DecryptFile(@"C:UsersknifeDesktop翻译.txt");
                Console.WriteLine("over");
                Console.ReadLine();
            }
    
            
        }
    }
  • 相关阅读:
    Http服务器实现文件上传与下载(二)
    Http服务器实现文件上传与下载(三)
    NHibernate VS IbatisNet
    5. Element-UI的基本使用
    4. Vue脚手架
    3. Vue单文件组件
    webpack中的加载器
    webpack
    02.模块化相关规范
    01.前端工程化的学习目标
  • 原文地址:https://www.cnblogs.com/nanfei/p/11077580.html
Copyright © 2011-2022 走看看