bbsggy 2013-09-11 09:04
浏览 924

.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

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

代码仅用于交流思想.

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了