- 浏览: 562358 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1134比较日期: function compareDate( ... -
Arrays.asList详解
2012-09-10 09:52 854Arrays.asList详解 记得以前写过一 ... -
Collections.addAll
2012-09-07 18:04 2282collections用法以及list 简单实例 Colle ... -
string
2012-09-06 17:20 852String a = "ab"; ... -
图片复制
2012-07-05 11:53 1037import java.io.File;import java ... -
thumbnailator 图片缩放
2012-07-04 20:10 1318Thumbnailator是一个用来生成图像缩略图的 J ... -
java File
2012-06-29 13:53 1228直接下载的,整理的很好,这里做个记录,基础的东西都是。 Fi ... -
mysql 时间比较
2012-06-05 19:57 1弱智得问题,分开写 SELECT * FROM bb_ ... -
split
2012-05-23 10:46 1158//String[] idArr = StringUtil ... -
(转)关于Integer大小比较的问题
2012-05-18 10:32 842关于Integer大小比较的问题 昨天跟朋友一起 ... -
toString
2012-05-14 20:01 966public abstract class ToStringB ... -
io读取操作
2012-03-09 16:18 912public void writeFile(Strin ... -
string[] to map
2012-03-03 17:23 1045public static Map<Inte ... -
tomcat中文问题的解决
2012-03-01 09:55 824第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
java方式将汉字转成拼音
2012-02-24 13:02 1030/** * 需要一个开源的jar包pinyin4j-2.5. ... -
System.getProperty(key)
2012-02-15 15:08 984public static void main(String ... -
CodeFilter
2012-05-22 11:14 804package com.bitbao.cm.common.ut ... -
Integer值比较误区
2012-05-22 11:14 892例子: Integer i1 = 12; I ... -
手机与web验证信息的token
2012-01-29 10:32 991{"uid":8,"token& ... -
容易忽略的for循环问题
2012-01-18 15:33 11441、项目中对用户操作的结果进行审核时候,出现一个问题,如果对省 ...
相关推荐
java加密工具类。提供各种加密方法,加密方法有:aes,des,md5,sha等加密方式
js javascript 加密 MD5 SHA
java加密工具包 包括 AES SHA SHA1 SHA256 BASEENCODE64 md5
MD5/SHA验证工具 无聊时写着玩儿的, 本程序具有一定的实用价值, 本人经常用其检查下载的文件是否有损坏等, 附带源码,可作为JAVA爱好者参考 算法直接调用Java的API,代码量:318行 jar文件双击直接运...
博文链接:https://llying.iteye.com/blog/171256
商业项目使用报文和加解密和对数据进行加解密
java加密与解密工具类MD5方式加密SHA方式加密以MD5方式加密、加私钥
一个包含MD5.DES3,DES,AES,BASE64,SHA等常见的7种加密算法,可以直接下载集成到项目里面
用java写的暴力破解,专门破解AES,DES,SHA,MD5. 你们可以自己再次的去完善一下,这里纯属简单版本。 用java写的暴力破解,专门破解AES,DES,SHA,MD5. 你们可以自己再次的去完善一下,这里纯属简单版本。 用java写的...
CryptUtil java工具加密类(支持 MD5、SHA、DES加密,解密)
3.常用加密算法工具类,包括MD5、SHA、DES、HMAC、Base64等 4.RSA加解密,RSA签名、签名验证类 5.文件处理工具类,实现文件的复制、移动、查找、追加内容等。支持自动识别文件编码,解决中文乱码问题 6.扩展Properties...
个人在开发中使用到的一个工具类,对字符串简单的加密,使用的是java提供的类
JCT 为java开发者提供实用、方便、简洁的加密和...1.0版提供Blowfish,SHA与MD5数字摘要,PBE基于口令的加密,RSA算法工具类,使这些算法更容易在编成中使用.文件包中含源码、文档、class包WDSsoft:http://www.wdssoft.com
用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用...
用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用...
java 常用工具类,暂时包括MD5、SHA1、HMAC、3DES加密,进制转换
用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用...
RSA-SHA384、RSA-SHA512、BLAKE2B512、MD4、MD5、MD5-SHA1、 MDC2、MDC2WITHRSA、SHA1、SHA224 、SHA256、SHA384、SHA 对称加密算法:AES、DES、IDEA、XXTEA等 非对称加密算法:RSA、SM(国产椭圆曲线密码)