///
/// 加解密抽象类
///
public abstract class DEncrypt
{
protected byte[] sKey = { 12, 23, 45 };
protected byte[] sIV = { 12, 23, 45 };
public void SetKeyIV(byte[] key, byte[] iv)
{
sKey = key;
sIV = iv;
}
public abstract string Encrypt(string word);
public abstract string Decrypt(string word);
}
///
/// 第一种加解密方式(RSAD)
///
public class New1Encry : DEncrypt
{
public override string Decrypt(string word)
{
//可以使用base.sKey base.sIV
return null;
}
public override string Encrypt(string word)
{
//可以使用base.sKey base.sIV
return null;
}
}
/// <summary>
/// 第二种加解密方式(AES)
/// </summary>
public class New2Encry : DEncrypt
{
public override string Decrypt(string word)
{
//可以使用base.sKey base.sIV
return null;
}
public override string Encrypt(string word)
{
//可以使用base.sKey base.sIV
return null;
}
}
代码如上:
本打算采用接口,但考虑到有key和IV,故使用抽象类
个人观点:
调用的时候
New1Encry aes = new New1Encry();
aes.SetKeyIV(null, null);
aes.Encrypt("...");
aes.Decrypt("....");
在抽象类中默认给sKey和sIV赋值,使用的时候也可以调用SetKeyIV(null,null)方法自定义Key和IV,也可以使用抽象类中默认的值,扩展新的加密方式的时候之类可直接访问基类的sKey和sIV
此种方式有何不合理处,还望大家多多指教.
代码仅用于交流思想.