[C#]MD5 & DES

來源:互聯網
上載者:User

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web;
namespace Test.Com
{
    /// <summary>
    /// DESEncryptor 的摘要說明。
    /// </summary>
    public class DESEncryptor
    {
        #region 私人成員
        /// <summary>
        /// 輸入字串
        /// </summary>
        private string inputString = null;
        /// <summary>
        /// 輸出字串
        /// </summary>
        private string outString = null;
        /// <summary>
        /// 輸入檔案路徑
        /// </summary>
        private string inputFilePath = null;
        /// <summary>
        /// 輸出檔案路徑
        /// </summary>

        private string outFilePath = null;
        /// <summary>
        /// 加密金鑰
        /// </summary>
        private string encryptKey = null;
        /// <summary>
        /// 解密密鑰
        /// </summary>
        private string decryptKey = null;
        /// <summary>
        /// 提示資訊
        /// </summary>
        private string noteMessage = null;
        #endregion
        #region 公用屬性
        /// <summary>
        /// 輸入字串
        /// </summary>
        public string InputString
        {
            get { return inputString; }
            set { inputString = value; }
        }
        /// <summary>
        /// 輸出字串
        /// </summary>
        public string OutString
        {
            get { return outString; }
            set { outString = value; }
        }
        /// <summary>
        /// 輸入檔案路徑
        /// </summary>
        public string InputFilePath
        {
            get { return inputFilePath; }
            set { inputFilePath = value; }
        }
        /// <summary>
        /// 輸出檔案路徑
        /// </summary>
        public string OutFilePath
        {
            get { return outFilePath; }
            set { outFilePath = value; }
        }
        /// <summary>
        /// 加密金鑰
        /// </summary>
        public string EncryptKey
        {
            get { return encryptKey; }
            set { encryptKey = value; }
        }
        /// <summary>
        /// 解密密鑰
        /// </summary>
        public string DecryptKey
        {
            get { return decryptKey; }
            set { decryptKey = value; }
        }
        /// <summary>
        /// 錯誤資訊
        /// </summary>
        public string NoteMessage
        {
            get { return noteMessage; }
            set { noteMessage = value; }
        }
        #endregion
        #region 建構函式
        public DESEncryptor()
        {
            //
            // TODO: 在此處添加建構函式邏輯
            //
        }
        #endregion
        #region DES加密字串
        /// <summary>
        /// 加密字串
        /// 注意:密鑰必須為8位
        /// </summary>
        /// <param name="strText">字串</param>
        /// <param name="encryptKey">密鑰</param>
        public void DesEncrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0, 8));
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(this.inputString);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                this.outString = Convert.ToBase64String(ms.ToArray());
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message;
            }
        }
        #endregion
        #region DES解密字串
        /// <summary>
        /// 解密字串
        /// </summary>
        /// <param name="this.inputString">加了密的字串</param>
        /// <param name="decryptKey">密鑰</param> 專業的3S站 3s8.cn
        public void DesDecrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            byte[] inputByteArray = new Byte[this.inputString.Length];
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                inputByteArray = Convert.FromBase64String(this.inputString);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                System.Text.Encoding encoding = new System.Text.UTF8Encoding();
                this.outString = encoding.GetString(ms.ToArray());
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message;
            }
        }
        #endregion
        #region DES加密檔案
        /// <summary>
        /// DES加密檔案
        /// </summary>
        /// <param name="this.inputFilePath">源檔案路徑</param>
        /// <param name="this.outFilePath">輸出檔案路徑</param>
        /// <param name="encryptKey">密鑰</param>
        public void FileDesEncrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0, 8));
                FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
                FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                fout.SetLength(0);
                //Create variables to help with read and write.
                byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
                long rdlen = 0; //This is the total number of bytes written.
                long totlen = fin.Length; //This is the total length of the input file.
                int len; //This is the number of bytes to be written at a time.
                DES des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);

                //Read from the input file, then encrypt and write to the output file.
                while (rdlen < totlen)
                {
                    len = fin.Read(bin, 0, 100);
                    encStream.Write(bin, 0, len);
                    rdlen = rdlen + len;
                }

                encStream.Close();
                fout.Close();
                fin.Close();

            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message.ToString();

            }
        }
        #endregion
        #region DES解密檔案
        /// <summary>
        /// 解密檔案
        /// </summary>
        /// <param name="this.inputFilePath">加密了的檔案路徑</param>
        /// <param name="this.outFilePath">輸出檔案路徑</param>
        /// <param name="decryptKey">密鑰</param>
        public void FileDesDecrypt()
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
                FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
                fout.SetLength(0);
                //Create variables to help with read and write.
                byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
                long rdlen = 0; //This is the total number of bytes written.
                long totlen = fin.Length; //This is the total length of the input file.
                int len; //This is the number of bytes to be written at a time.
                DES des = new DESCryptoServiceProvider();
                CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);

                //Read from the input file, then encrypt and write to the output file.
                while (rdlen < totlen)
                {
                    len = fin.Read(bin, 0, 100);
                    encStream.Write(bin, 0, len);
                    rdlen = rdlen + len;
                }

                encStream.Close();
                fout.Close();
                fin.Close();
            }
            catch (System.Exception error)
            {
                this.noteMessage = error.Message.ToString();
            }
        }
        #endregion
        #region MD5
        /// <summary>
        /// MD5 Encrypt
        /// </summary>
        /// <param name="strText">text</param>
        /// <returns>md5 Encrypt string</returns>
        public void MD5Encrypt()
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(this.inputString));
            this.outString = System.Text.Encoding.Default.GetString(result);
        }
        #endregion

    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.