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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
.net/java/ios三种语言可通用的加密解密方法
一个Android IOS Java通用的AES128加密解密Demo、这个Demo可以满足用Java开发的后端接口、但是如果不巧你用的.net开发的后台程序、那么我们又应该怎么去编写后端的程序呢?今天给大家分享一个比较强大的Demo、可以同时支持Android IOS Java .NET的加密解密的算法Demo、希望对大家有用。
C#版本和javascript版本的DES加密函数(注:可以交互加解密)
因项目需要,要用js加密后,提交给C#解密,在网上找了半天,无数个版本,却不能互相使用 就随便下载了一个JS版本的,把它改写成C#版本的 这样JS加密后,C#也能解密 反之C#加密后,JS也能解密 共享给大家吧。 注:是VS.Net2008版本,里面包含js的加解密函数和C#的加解密函数
.net 数据库访问组件源码及Demo
.net 数据库访问组件 加解密工具 串列化
Javascript和C#真正可以交互的DES加解密代码
因项目需要,要用js加密后,提交给C#解密,在网上找了半天,网上有无数个版本,却找不到一个能互相使用的甚至就连都是js版本的,都不能互通,汗一个。 因为时间关系,没有去深究加密代码,就随便下载了一个JS版本的,并把它改写成C#版本的  这样JS加密后的结果,C#也能解密反之C#加密后的结果,JS也能解密  我把它发出来给大家共享吧 注:源代码是VS.Net2008版本创建的,里面包含js的加解密函...
吉日嘎拉 C#.NET 通用权限管理系统组件 v3.7 源代码 20120724
吉日嘎拉福利大派送,通用权限管理大师之作。 通用权限管理系统组件(GPM - General Permissions Manager)自2003年开始发布,目前是国内注册用户和免费盗版用户最多的权限管理系统,是各种信息管理系统开发中彻底的权限解决方案。本组件支持多种主流数据库(Oracle、sqlsever、db2、mysql),功能强大,使用方便,代码简洁,思路严谨,被广大支持者称为权限管理系统中的“走火入魔级权限管理系统”。 精心维护通用权限管理系统组件(GPM - General Permissions Manager)有10多年,5年的不断推广,20万行经典的业务逻辑积累,经过上万次的调试修正,经历了五百个付费客户,三百多个软件公司的实战开发,组件越来越好用、越来越稳定成熟了。
DES加密解密—Android IOS C#互通
公司项目需要,聊天的时候不想明文传输,需要对话双方各有一个密钥,才能解开发送的密文信息!所以自然而然用到了DES加解密。但是问题随之而来了,我们后台是C#做的,客户端有我们Android和IOS,所以我们之间要相互都能解析才能沟通。所以、就是接下来的解决方法啦! Android端加解密: /** * 加密 * @param message 原文 * @param key
3des加密解密base64编码解码完全与ASP.NET,JAVA,兼容的js
3des加密解密 base64编码解码的源代码 完全与标准算法一致,与C# java 结果一致
AutoUpdater(新版自动升级组件)源码 v2.0
工作两年居然没有在上面发布任何资源,前几天心血来潮把平时的练习的一个东西拿来重写了一下,现在把源码拿来给大家分享一下。
C++客户端和java服务端互相加解密
这段时间在公司做一个APP和移动网关通信加密的项目,本来是想采用https或者openssl来加密通道,但考虑到数据本身的安全性问题,还是打算自己编写加解密算法。 一、流程 1、客户端生成AES密钥和RSA密钥对 2、服务端生成RSA密钥对,并公开公钥,保存私钥 3、客户端获取服务端公钥,同时将客户端公钥发送到服务端 4、客户端用服务端公钥加密AES密钥,同时用客户端私钥对加密后的AES
[.NET] 浅谈可扩展性框架:MEF
之前在使用Prism框架时接触到了可扩展性框架MEF(Managed Extensibility Framework),体验到MEF带来的极大的便利性与可扩展性。 此篇将编写一个可组合的应用程序,帮助大家快速熟悉MEF并将其应用于实际项目中。 有关MEF中的名词含义及功能实现,请大家移步:火车票 介绍下将要编写的Demo程序(下图),使用winform开发。 通过组合操作,程序动态