- 浏览: 578463 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- webservice (3)
- oracle (37)
- sqlserver (8)
- j2ee (56)
- linux (7)
- javaweb (47)
- office (1)
- struts (23)
- hibernate (11)
- spring (29)
- 网络 (2)
- tomcat (13)
- tongweb (0)
- weblogic (0)
- powerdesiginer (3)
- svn (3)
- js (20)
- ie (2)
- 编译 (3)
- css (2)
- 操作系统 (5)
- Android (41)
- jbpm4.3 (1)
- fckeditor (3)
- 操作excel (2)
- db2常用命令 (1)
- ibatis (5)
- mysql (16)
- 表达式语言 (1)
- java方式调用存储过程 (1)
- ca (1)
- linux客户端 (1)
- 电子数码 (1)
- 行业应用 (12)
- 开发工具 (4)
- 面试 (1)
- 计算机原理 (1)
- NOSQL (5)
- 虚拟机 (1)
- nginx (0)
- velocity (2)
- jndi (1)
- spring mvc (39)
- springmvc (32)
- 安全 (5)
- htmleditor (6)
- iphone4 (1)
- html (4)
- jstl (2)
- ckeditor (5)
- 连接池 (1)
- jquery (6)
- 分页 (1)
- 技术研发规则 (1)
- javamail (1)
- maven (2)
- upload (1)
- log (1)
- 测试 (10)
- spring roo (1)
- 版本控制 (2)
- find bugs (0)
- jsf (0)
- springroo (0)
- 小道理 (1)
- 小道理,技术标准 (1)
- jsf (0)
- bitbao (2)
- redmine (3)
- 团队意识 (1)
- mybatis (2)
- jquery mobile (1)
- flexpaper (0)
- json (4)
- URLRewriteFilte (1)
- html5 (1)
- 都乐保活动 (0)
- openfire (0)
- TreeMap (1)
- build (0)
- javaweb,tag (0)
- algorithm (1)
- tag (2)
- 扯淡 (0)
- mac (2)
- 叶一火(老一) (1)
- 游玩 (1)
- 编码 (1)
- 上线部署 (0)
- 研发管理 (0)
- thumbnailator (2)
- 旅游 (0)
- bingweibo (1)
- 杂谈 (4)
- ktv (1)
- weibo (1)
- 爱情 (2)
- 饮食 (1)
- MediaWiki (1)
- git (1)
- 版本库 (1)
- servlet (1)
- 感悟 (1)
- 人生 (1)
- highcharts (1)
- poi (0)
- websphere (0)
- php (1)
最新评论
-
woshixushigang:
good
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
nathanleewei:
org.springframework.jdbc.core.B ...
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
浪禾木:
请问是ckeditor\contents.css吗?改过以后 ...
ckeditor自动换行问题 -
simusuishi:
刚哥威武!
ckeditor取值赋值问题 -
a455642158:
收割完毕……
Android开源项目源码下载(不断更新中)
版权声明:
dtstudy原创文章,转载请注明出处: http://dtstudy.iteye.com/blog/855357
提出问题:
MD5,SHA算法是常用的两种加密算法。以前看过很多人写的md5算法,要么过于难懂,要么过于冗长,而且不能切换为其他加密算法,非常不给力。
分析和解决问题:
于是,决定自己写一个简单好用的加密算法。翻看JDK1.5的API文档,惊喜的发现,在java.security这个包下面有一个MessageDigest类:此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。bingo!参考了部分网友的代码,本人的代码如下,不足之处,请大家批评指正。JDK/JRE版本:
1.5+
- package common.util.security;
-
- import java.io.UnsupportedEncodingException;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
-
- public class EncryptUtil {
-
- public static void main(String[] args) {
- //md5加密测试
- String md5_1 = md5("123" );
- String md5_2 = md5("abc" );
- System.out.println(md5_1 + "\n" + md5_2);
- System.out.println("md5 length: " + md5_1.length());
- //sha加密测试
- String sha_1 = sha("123" );
- String sha_2 = sha("abc" );
- System.out.println(sha_1 + "\n" + sha_2);
- System.out.println("sha length: " + sha_1.length());
- }
-
- // md5加密
- public static String md5(String inputText) {
- return encrypt(inputText, "md5" );
- }
-
- // sha加密
- public static String sha(String inputText) {
- return encrypt(inputText, "sha-1" );
- }
-
- /**
- * md5或者sha-1加密
- *
- * @param inputText
- * 要加密的内容
- * @param algorithmName
- * 加密算法名称:md5或者sha-1,不区分大小写
- * @return
- */
- private static String encrypt(String inputText, String algorithmName) {
- if (inputText == null || "" .equals(inputText.trim())) {
- throw new IllegalArgumentException( "请输入要加密的内容" );
- }
- if (algorithmName == null || "" .equals(algorithmName.trim())) {
- algorithmName = "md5" ;
- }
- String encryptText = null ;
- try {
- MessageDigest m = MessageDigest.getInstance(algorithmName);
- m.update(inputText.getBytes("UTF8" ));
- byte s[] = m.digest();
- // m.digest(inputText.getBytes("UTF8"));
- return hex(s);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return encryptText;
- }
-
- // 返回十六进制字符串
- private static String hex( byte [] arr) {
- StringBuffer sb = new StringBuffer();
- for ( int i = 0 ; i < arr.length; ++i) {
- sb.append(Integer.toHexString((arr[i] & 0xFF ) | 0x100 ).substring( 1 ,
- 3 ));
- }
- return sb.toString();
- }
package common.util.security; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class EncryptUtil { public static void main(String[] args) { //md5加密测试 String md5_1 = md5("123"); String md5_2 = md5("abc"); System.out.println(md5_1 + "\n" + md5_2); System.out.println("md5 length: " + md5_1.length()); //sha加密测试 String sha_1 = sha("123"); String sha_2 = sha("abc"); System.out.println(sha_1 + "\n" + sha_2); System.out.println("sha length: " + sha_1.length()); } // md5加密 public static String md5(String inputText) { return encrypt(inputText, "md5"); } // sha加密 public static String sha(String inputText) { return encrypt(inputText, "sha-1"); } /** * md5或者sha-1加密 * * @param inputText * 要加密的内容 * @param algorithmName * 加密算法名称:md5或者sha-1,不区分大小写 * @return */ private static String encrypt(String inputText, String algorithmName) { if (inputText == null || "".equals(inputText.trim())) { throw new IllegalArgumentException("请输入要加密的内容"); } if (algorithmName == null || "".equals(algorithmName.trim())) { algorithmName = "md5"; } String encryptText = null; try { MessageDigest m = MessageDigest.getInstance(algorithmName); m.update(inputText.getBytes("UTF8")); byte s[] = m.digest(); // m.digest(inputText.getBytes("UTF8")); return hex(s); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encryptText; } // 返回十六进制字符串 private static String hex(byte[] arr) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; ++i) { sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3)); } return sb.toString(); }
- 上述代码的运行结果:
- 202cb962ac59075b964b07152d234b70
- 900150983cd24fb0d6963f7d28e17f72
- md5 length: 32
- 40bd001563085fc35165329ea1ff5c5ecbdbbeef
- a9993e364706816aba3e25717850c26c9cd0d89d
- sha length: 40
上述代码的运行结果: 202cb962ac59075b964b07152d234b70 900150983cd24fb0d6963f7d28e17f72 md5 length: 32 40bd001563085fc35165329ea1ff5c5ecbdbbeef a9993e364706816aba3e25717850c26c9cd0d89d sha length: 40
由此可见,MD5和SHA-1加密后生成的字符串长度分别为32和40。
发表评论
-
日期比较
2013-06-13 16:21 1176比较日期: function compareDate( ... -
Arrays.asList详解
2012-09-10 09:52 889Arrays.asList详解 记得以前写过一 ... -
Collections.addAll
2012-09-07 18:04 2330collections用法以及list 简单实例 Colle ... -
string
2012-09-06 17:20 892String a = "ab"; ... -
图片复制
2012-07-05 11:53 1068import java.io.File;import java ... -
thumbnailator 图片缩放
2012-07-04 20:10 1386Thumbnailator是一个用来生成图像缩略图的 J ... -
java File
2012-06-29 13:53 1278直接下载的,整理的很好,这里做个记录,基础的东西都是。 Fi ... -
mysql 时间比较
2012-06-05 19:57 1弱智得问题,分开写 SELECT * FROM bb_ ... -
split
2012-05-23 10:46 1203//String[] idArr = StringUtil ... -
(转)关于Integer大小比较的问题
2012-05-18 10:32 878关于Integer大小比较的问题 昨天跟朋友一起 ... -
toString
2012-05-14 20:01 1005public abstract class ToStringB ... -
io读取操作
2012-03-09 16:18 963public void writeFile(Strin ... -
string[] to map
2012-03-03 17:23 1085public static Map<Inte ... -
tomcat中文问题的解决
2012-03-01 09:55 861第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
java方式将汉字转成拼音
2012-02-24 13:02 1063/** * 需要一个开源的jar包pinyin4j-2.5. ... -
System.getProperty(key)
2012-02-15 15:08 1021public static void main(String ... -
CodeFilter
2012-05-22 11:14 840package com.bitbao.cm.common.ut ... -
Integer值比较误区
2012-05-22 11:14 938例子: Integer i1 = 12; I ... -
手机与web验证信息的token
2012-01-29 10:32 1024{"uid":8,"token& ... -
容易忽略的for循环问题
2012-01-18 15:33 11751、项目中对用户操作的结果进行审核时候,出现一个问题,如果对省 ...
相关推荐
以下是一个简单的Java MD5加密工具类示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { private static final String MD5 = "MD5"; ...
以上代码中,`encryptMD5`和`encryptSHA256`方法分别实现了MD5和SHA-256的加密过程。它们首先创建一个`MessageDigest`实例,然后使用`digest()`方法对输入的密码字符串进行散列处理,最后将结果转换为16进制字符串。...
本文将详细介绍一个Java实现的MD5加密工具类,包括其核心功能、实现原理以及如何使用。 #### 二、工具类核心功能 该Java_MD5加密工具类提供了以下主要功能: 1. **转换字节数组为16进制字符串**:将字节数组转换...
java加密工具类。提供各种加密方法,加密方法有:aes,des,md5,sha等加密方式
MD5Utils 是一个工具类,提供了 MD5Encode 方法来实现 MD5 加密。该方法将输入的字符串转换为 byte 数组,然后使用 MessageDigest 类的 getInstance 方法获取 MD5 加密对象,最后将加密后的哈希值转换为字符串。 二...
这些文件名表明了几个关键的加密算法实现,包括AES(高级加密标准)、DES(数据加密标准)、MD5(消息摘要算法5)、SHA(安全散列算法)以及3DES(三重DES)。下面我们将详细探讨这些加密工具类在Java中的应用及其...
Java作为一种广泛应用的编程语言,提供了丰富的库和工具来实现各种加密算法,如MD5和SHA-1。这两种散列函数是信息安全领域的基石,用于确保数据的完整性并验证其来源。 MD5(Message-Digest Algorithm 5)是一种...
2. **Java实现**:在Java中,`java.security.MessageDigest`类提供了对包括MD5在内的多种哈希算法的支持。首先需要实例化`MessageDigest`对象,然后调用`digest()`方法对数据进行哈希计算,最后将得到的字节数组转换...
js javascript 加密 MD5 SHA
### MD5加密工具类知识点详解 #### 一、MD5简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值(又称哈希值)。它通过一个可变长度的数据块输入,产生一个...
为了更好地理解和使用这个工具类,你需要了解基本的MD5和签名算法原理,并熟悉如何在代码中调用这些工具类的方法。同时,注意MD5虽然快速但已不再被视为安全的哈希算法,因为它容易产生碰撞,不适合用于存储敏感信息...
MD5和SHA可用于文件校验;AES适合大量数据的高效加密;而RSA则用于保障公钥通信的安全。这些JavaScript文件的集成,使得开发者能够在浏览器环境中轻松实现这些加密功能,增强了Web应用的安全性。 综上所述,这个...
这个jar包包含了一系列用于MD5加密的Java类和方法。开发者可以将其导入项目中,通过调用相关API实现对字符串、文件等进行MD5加密。通常,它会包含以下几个关键组件: - `MessageDigest` 类:这是Java标准库中的类,...
在IT领域,加密算法是确保数据安全的重要工具。在Java编程语言中,开发人员经常使用各种加密技术来保护敏感信息,...然而,需要注意的是,随着技术的发展,MD5和SHA1的安全性已逐渐下降,应当考虑使用更新的加密标准。
本文将详细介绍在Kotlin中实现的几种主要加密算法,包括AES、DES、CBC/ECB模式、MD5、SHA1以及SHA256。这些算法在数据保护、网络安全以及密码学中扮演着关键角色。 1. **AES(Advanced Encryption Standard)**:...
例如,可以使用`java.security.MessageDigest`类实现MD5和SHA哈希计算,`javax.crypto.Cipher`类处理DES和AES的加密解密,而`java.util.Base64`类则用于BASE64编码解码。 总的来说,这个"加密算法工具类"提供了一站...
这个"Java-MD5加密工具.rar"提供了一个简单的MD5加密工具类,方便开发者快速实现数据的哈希加密。 MD5的工作原理是将输入的数据分割成512位的块,并对每个块进行一系列复杂的计算,最终生成一个128位(16字节)的...
在Java编程领域,加密工具类是开发过程中必不可少的...开发者可以根据项目需求选择合适的工具类,也可以作为理解这些基本概念和实现方式的参考。在实际使用时,务必遵循相关的安全规范,确保应用程序的安全性和合规性。