zoukankan      html  css  js  c++  java
  • 技巧篇:结合反射技术实现多算法动态加密

    这个题目,我姑且这样叫吧,照例,我们先来分析一下需求。
    比如有一个设置密码的功能,但用户希望能够自己选择密码的加密算法,如MD5、HMAC、SHA1等,然后程序会根据用户所选择的算法对密码进行加密并存入数据库,同时在配置文件中记录下用户的选择。
    按照一般的思路,我们可能会做一个分支判断,如


     

    呵呵,其实我们不必要这样做,来,先来看看MD5、HMAC、SHA1、SHA384等类有什么共同的特征?
    1、都是通过调用Create静态方法来创建一个实例,当然,像MD5这些类都是抽象类,是不能被实例化的。其实,它们都返回一个名为“算法名CryptoServiceProvider”的类实例,如MD5CryptoServiceProvider、SHA1CryptoServiceProvider等,这些类都是对算法计算的具体实现。
    2、都是通过调用ComputeHash方法计算哈希值的。
     
    而且,这些类都是位于同一个命名空间下,因些,根据不同的算法进行加密,唯一不同的是类名,也就是说,我们的代码只写一次就可以了,把代码封装在一个方法中,通过在参数中传递类名。
     
    能做到这种功夫的,也就用到反射了,通过反射动态动调用类成员来完成。


     

    接着需要一个方法来把字节数组转为字符串。


     

    然后,我们就可以在其它代码中使用了。


     

    好了,现在可以运行一个试试。

  • 相关阅读:
    十分钟构建双十一交互分析大盘
    数字IT基础-数据采集总线
    阿里云文件存储(NAS)助力业务系统承载双十一尖峰流量
    如何在网络视听行业建一扇内容安全大门?
    Frost & Sullivan权威报告:阿里云再次领跑云WAF大中华区市场
    赋能时空云计算,阿里云数据库时空引擎Ganos上线
    点播转码相关常见问题及排查方式
    《边缘云计算技术及标准化白皮书》
    内存性能的正确解读
    《倡议书——节约用电,从我做起》
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2457949.html
Copyright © 2011-2022 走看看