问题描述
- .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此种方式有何不合理处,还望大家多多指教.
代码仅用于交流思想.
时间: 2024-09-14 13:37:45