zoukankan      html  css  js  c++  java
  • 用C#实现DES加密解密封装

    主要用到C#提供的以下三个类:
    MemoryStream 内存流
    DESCryptoServiceProvider 加密服务提供者类
    CryptoStream 讲数据流连接到加密转换的流

    using System;
    using System.Security.Cryptography;
    using System.Text;
    using System.IO;

    namespace Common
    {
        /// <summary>
        /// DESEncrypt加密解密算法。
        /// </summary>
        public sealed class DESEncrypt
        {
            private DESEncrypt()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }

            private static string key = "zhoufoxcn";

            /// <summary>
            /// 对称加密解密的密钥
            /// </summary>
            public static string Key
            {
                get
                {
                    return key;
                }
                set
                {
                    key = value;
                }
            }

            /// <summary>
            /// DES加密
            /// </summary>
            /// <param name="encryptString"></param>
            /// <returns></returns>
            public static string DesEncrypt(string encryptString)
            {
                byte[] keyBytes = Encoding.UTF8.GetBytes(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 static string DesDecrypt(string decryptString)
            {
                byte[] keyBytes = Encoding.UTF8.GetBytes(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());
            }
        }
    }

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/gyc19920704/p/6510611.html
Copyright © 2011-2022 走看看