⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binarycrypto.cs

📁 这是可以加密&解密字符串
💻 CS
字号:
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace GTT
{
    public abstract class BinaryCrypto
    {
        protected SymmProvEnum _netSelected;
        protected SymmetricAlgorithm _mobjCryptoService;
        protected string _key;

        /// <remarks>
        /// 使用.Net SymmetricAlgorithm 类的构造器.
        /// </remarks>
        public BinaryCrypto(SymmProvEnum _netSelected)
        {
            this._netSelected = _netSelected;
            switch (_netSelected)
            {
                case SymmProvEnum.DES:
                    _mobjCryptoService = new DESCryptoServiceProvider();
                    break;
                case SymmProvEnum.RC2:
                    _mobjCryptoService = new RC2CryptoServiceProvider();
                    break;
                case SymmProvEnum.Rijndael:
                    _mobjCryptoService = new RijndaelManaged();
                    break;
            }
        }
        /// <remarks>
        /// 使用自定义SymmetricAlgorithm类的构造器.
        /// </remarks>
        public BinaryCrypto(SymmetricAlgorithm ServiceProvider)
        {
            _mobjCryptoService = ServiceProvider;
        }

        public SymmProvEnum NetSelected
        {
            get { return _netSelected; }
        }

        public string Key
        {
            get { return _key; }
            set { _key = value; }
        }

        /// <remarks>
        /// Depending on the legal _key size limitations of 
        /// a specific CryptoService provider and length of 
        /// the private _key provided, padding the secret _key 
        /// with space character to meet the legal size of the algorithm.
        /// </remarks>
        protected byte[] GetLegalKey(string Key)
        {
            string sTemp;
            if (_mobjCryptoService.LegalKeySizes.Length > 0)
            {
                int lessSize = 0, moreSize = _mobjCryptoService.LegalKeySizes[0].MinSize;
                // _key sizes are in bits
                while (Key.Length * 8 > moreSize)
                {
                    lessSize = moreSize;
                    moreSize += _mobjCryptoService.LegalKeySizes[0].SkipSize;
                }
                sTemp = Key.PadRight(moreSize / 8, ' ');
            }
            else
                sTemp = Key;
            // convert the secret _key to byte array
            return ASCIIEncoding.ASCII.GetBytes(sTemp);
        }

        public abstract byte[] ExecuteBytes(byte[] inputBytes);

        public abstract void ExecuteStream(Stream inputStream, Stream outputStream);

        public abstract bool ExecuteFile(string inputfile, string outputfile);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -