这个题目,我姑且这样叫吧,照例,我们先来分析一下需求。
比如有一个设置密码的功能,但用户希望能够自己选择密码的加密算法,如MD5、HMAC、SHA1等,然后程序会根据用户所选择的算法对密码进行加密并存入数据库,同时在配置文件中记录下用户的选择。
按照一般的思路,我们可能会做一个分支判断,如
呵呵,其实我们不必要这样做,来,先来看看MD5、HMAC、SHA1、SHA384等类有什么共同的特征?
1、都是通过调用Create静态方法来创建一个实例,当然,像MD5这些类都是抽象类,是不能被实例化的。其实,它们都返回一个名为“算法名CryptoServiceProvider”的类实例,如MD5CryptoServiceProvider、SHA1CryptoServiceProvider等,这些类都是对算法计算的具体实现。
2、都是通过调用ComputeHash方法计算哈希值的。
而且,这些类都是位于同一个命名空间下,因些,根据不同的算法进行加密,唯一不同的是类名,也就是说,我们的代码只写一次就可以了,把代码封装在一个方法中,通过在参数中传递类名。
能做到这种功夫的,也就用到反射了,通过反射动态动调用类成员来完成。
接着需要一个方法来把字节数组转为字符串。
然后,我们就可以在其它代码中使用了。
好了,现在可以运行一个试试。
分享到:
相关推荐
- **加密技术**:介绍了加密算法的基础知识及其在Web安全中的应用。 - **社会工程学**:虽然不直接涉及技术细节,但了解社会工程学对于防范针对人的攻击至关重要。 #### 三、实践案例分析 书中还包含了大量的实际...
- **加密标准**:增强了加密标准,支持更多的加密算法,如SHA-256和AES。 - **安全策略**:提供了更灵活的安全策略配置选项,允许开发者更精细地控制应用的安全性。 #### 4. **资源管理器** Java 7 引入了一个...
因此,我将以标题中的“JAVA面试题总汇:j2ee面试知识”为基础,结合描述中的“安全”标签,对Java相关的面试知识点以及J2EE安全机制方面进行详细阐述。 ### Java面试题总汇:J2EE面试知识 #### 1. Java基础知识点...
【Java面试资料】-(机构内训资料)java面试宝典.pdf 这份压缩包文件包含的是专门针对Java程序员面试的内部培训资料,旨在帮助求职者准备...同时,也建议结合实际项目经验,理论与实践相结合,以达到最佳的学习效果。
标题中的“电信设备-一种基于眼球追踪的移动终端控制方法及移动终端”表明这是一个关于电信设备,特别是移动终端,利用眼球追踪技术实现控制的方法。这种技术是近年来人机交互领域的一个创新,它允许用户通过眼睛的...
在实际应用中,攻击者可能会结合多种技术,如多层混淆、动态加载、加密通信等,以提高隐蔽性和生存能力。而作为防御者,了解这些技巧并实施动态分析和行为检测是至关重要的,以便更有效地防止恶意活动。
8. **Java安全**:包括证书管理、加密算法、网络安全等内容。 这两本书结合,能够为Java开发者提供从基础到进阶的全面学习材料,无论是初学者还是有经验的开发者,都能从中受益。通过深入学习和实践这些知识点,...
5. **反射机制**:Java反射API在JDK1.6中得到了强化,允许程序在运行时动态地获取类的信息并操作类的对象,为元编程提供了可能。 6. **枚举类型**:JDK1.6支持枚举类型,这是一种安全的常量表示方式,可以避免枚举...
源码中可能包含了多路音频流的混音算法,确保多个声音能和谐共存,而不会相互干扰。 4. **回声消除与噪声抑制**: - 为了提供良好的通话体验,YY语音源码内可能包含了AEC(Acoustic Echo Cancellation)和ANS...
标题中的“使用无线信号预测人体动作,检测健康”涉及的是一个跨学科的研究领域,结合了无线通信技术、信号处理和生物医学。这个领域的研究旨在利用无线信号(如Wi-Fi、雷达或蓝牙)来非侵入性地监测人体的动态行为...
标题中的“行业分类-设备装置-基于光学...综上所述,基于光学原理的书法笔迹呈现方法是一个跨学科的创新技术,结合了光学、电子工程、计算机科学和艺术等多个领域的知识,旨在通过科技手段更好地服务和推广书法艺术。
手册基于一线大厂的实际经验,结合全网千万阅读量的技术博主的深入分析,通过15个关键问题的详细解答,为Java学习者构建了一条高效的学习路径。 1. **类型安全与泛型**:Java中的泛型是编程中的重要工具,用于确保...
- 加密算法与证书管理 - 安全编程的最佳实践 **章节33:并行编程使用任务与线程** - **知识点**: - 并行计算与多核处理器 - Task Parallel Library (TPL) - 并发集合与同步上下文 - 异步编程模型 (APM) **...
### JavaEE系统架构师学习路线之高级篇 #### 一、Java高级架构师设计 - 基础深入 1. **J2SE深入讲解** - J2SE(Java 2 Standard Edition)是Java标准版的基础,对于架构师而言,深入了解J2SE中的核心概念和技术是...
基于FP-growth优化SVM分类器的XSS攻击检测研究,意味着研究者尝试将FP-growth算法与SVM分类器结合起来,以提高检测XSS攻击的效率和准确性。该研究可能涉及到从大量的网络流量数据中提取特征,并用FP-growth挖掘频繁...
接下来将针对这九个阶段进行详细解析,并结合描述中的提示来阐述每一阶段可能涉及的技术及成长路径。 ### 第一阶段:基础编程能力 在这一阶段,重点在于掌握Java语言的基础知识,包括但不限于变量、数据类型、控制...
7. **标准库**:Go语言的标准库非常丰富,涵盖了网络、文件I/O、加密算法、JSON解析等多个领域,为开发者提供了强大的支持。 这个资源包可能包含以下内容: - 文章: - 关于Go语言设计哲学的解读 - Go语言并发...
这个库中的类主要用于提供Java平台的基础功能,包括对象模型、集合框架、I/O流、网络编程、多线程、反射、安全控制等。源码分析对于深入理解Java的工作原理和优化代码性能至关重要。 首先,我们来看看`javax`这个...
这需要结合动态链接库(DLL)和反射等技术,使得逆向分析更加困难。 4. **加密解密模块**:对关键的源码段进行加密,仅在运行时解密后执行。这种方法需要自定义加密算法,并配合内存保护机制,防止解密后的代码被...