📄 binarycrypto.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 + -