• 用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());
            }
        }
    }

  • 相关阅读:
    HDU 6181 Two Paths【次短路】【模板题】
    POJ 1236 Network of Schools【tarjan算法】【模板题】
    POJ 1236 Network of Schools【tarjan算法】【模板题】
    Tarjan 算法&模板
    Tarjan 算法&模板
    HDU 6168 Numbers【水题】
    HDU 6168 Numbers【水题】
    HDU 4523 湫秋系列故事——安排座位【组合dp】【好题】【思维题】
    HDU 4523 湫秋系列故事——安排座位【组合dp】【好题】【思维题】
    HDU 2087 剪花布条【最长不重复子串】【KMP】【水题】【模板题】
  • 原文地址:https://www.cnblogs.com/gyc19920704/p/6510611.html
Copyright © 2020-2023  润新知