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

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
    
    namespace ConsoleApp1
    {
        public class EncryptUtil
        {
            /// <summary>
            /// MD5加密码字符串
            /// </summary>
            /// <param name="sInputString">消息体</param>
            /// <returns>MD5签名字符</returns>
            public static string MD5Encrypt(string sInputString)
            {
                System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
                string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(sInputString))).Replace("-", "");
                return encoded;
            }
    
            /// <summary>
            /// DES加密
            /// </summary>
            /// <param name="sInputString">加密后的消息体</param>
            /// <param name="sKey">24位的密钥</param>
            /// <returns>解密后的消息体</returns>
            public static string DESEncryptBase64(string sInputString, string sKey)
            {
                if (string.IsNullOrEmpty(sInputString) || string.IsNullOrEmpty(sKey) || sKey.Length != 24)
                {
                    return string.Empty;
                }
    
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Mode = CipherMode.ECB;
                des.Padding = PaddingMode.PKCS7;
                string key = sKey.Substring(0, 12);
                string iv = sKey.Remove(0, 12);
                byte[] byKey = Convert.FromBase64String(key);
                byte[] byIV = Convert.FromBase64String(iv);
                byte[] inputByteArray = Encoding.UTF8.GetBytes(sInputString);
    
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
    
                return Convert.ToBase64String(ms.ToArray());
            }
    
            /// <summary>
            /// DES解密
            /// </summary>
            /// <param name="sInputString">待加密消息体</param>
            /// <param name="sKey">24位的密钥</param>
            /// <returns>加密后的消息体</returns>
            public static string DESDecryptBase64(string sInputString, string sKey)
            {
                if (string.IsNullOrEmpty(sInputString) || string.IsNullOrEmpty(sKey) || sKey.Length != 24)
                {
                    return string.Empty;
                }
    
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Mode = CipherMode.ECB;
                des.Padding = PaddingMode.PKCS7;
    
                string key = sKey.Substring(0, 12);
                string iv = sKey.Remove(0, 12);
                byte[] byKey = Convert.FromBase64String(key);
                byte[] byIV = Convert.FromBase64String(iv);
                byte[] inputByteArray = Convert.FromBase64String(sInputString);
    
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, byIV), CryptoStreamMode.Write);
    
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
    
                Encoding encoding = new UTF8Encoding();
                return encoding.GetString(ms.ToArray());
            }
    
        }
    
    }
    

      

  • 相关阅读:
    USB描述符(转)
    (转)Linux设备驱动之HID驱动 源码分析
    Linux USB 鼠标驱动程序详解(转)
    (转)linux如何获取鼠标相对位置信息
    从零写一个编译器(四):语法分析之构造有限状态自动机
    从零写一个编译器(三):语法分析之几个基础数据结构
    从零写一个编译器(二):语法分析之前置知识
    从零写一个编译器(一):输入系统和词法分析
    自底向上语法分析
    递归下降和LL(1)语法分析
  • 原文地址:https://www.cnblogs.com/sanday/p/7873665.html
Copyright © 2011-2022 走看看