2 bbsggy bbsggy 于 2013.09.11 17:04 提问

.NET 通用加解密组件,扩展性讨论

///
/// 加解密抽象类
///
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

此种方式有何不合理处,还望大家多多指教.

代码仅用于交流思想.

Csdn user default icon
上传中...
上传图片
插入图片