- 浏览: 1251149 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- 心情故事 (12)
- java (115)
- linux (55)
- 关系型数据库 (35)
- struts,jsf,spring (11)
- jdbc,hibernate,ibatis (11)
- jsp,jstl,c:tag,标签库 (2)
- ejb,webservice (1)
- tomcat,jboss,jetty,weblogic,websphere (15)
- java网络编程 (6)
- java线程 (0)
- js,jquery,json,xml,dom,html.regex (25)
- 设计模式 (6)
- BUG记录 (2)
- ant (2)
- jsp,servlet (4)
- swing (6)
- lucene+nutch (6)
- log4j (2)
- windows doc (2)
- ruby (1)
- ruby on rails (3)
- 操作系统网络 (18)
- apache 错误 (1)
- tomcat (10)
- jboss (9)
- jetty (9)
- weblogic (9)
- websphere (10)
- apache (2)
- AIX的iostat命令查看系统磁盘的使用情况 (1)
- oracle 统计一个表格有多少列 (1)
- Exception in thread "main" java.security.KeyStoreException: Windows-MY not found (1)
- jsp (1)
- jstl (1)
- c:tag (1)
- 标签库 (1)
- struts (1)
- jsf (1)
- spring (2)
- oracle,sqlplus (2)
- sqlplus (2)
- show errors (1)
- proc (1)
- function (1)
- ORA-06544: PL/SQL: internal error (1)
- arguments: [55916] (1)
- [] (7)
- 终端身份实施文档 (1)
- 重装系统之后飞鸽传书只能看到自己 (1)
- vsftp "上传 553 Could not create file" (1)
- startWebLogic.sh启动失败,提示Error initializing Embedded LDAP Server (1)
- java agent 注册为 windows 服务 (1)
- centos (1)
- svn (1)
- apr (1)
- apr-util (1)
- activemq (2)
- oracle (5)
- mysql (3)
- nosql (3)
- NSIS (1)
- windows wmic (1)
- c 指针 (1)
- c c++ (0)
- jmeter (0)
- 性能测试 (0)
- linux,备份 (2)
- C++ ,Virtual (1)
- windows dos (1)
- android (2)
- 大数据,云计算 (1)
- JVM垃圾收集 (1)
- jdbc (2)
- invoke (1)
- hibernate (1)
- ibatis (1)
- 个人开源项目源码收藏 (1)
- 批处理 (1)
- Mongodb mapreduce (8)
- kettle (1)
- Mongodb capped (1)
- mongodb gridfs (1)
- Mongodb 入门基础知识 (1)
- mongodb (8)
- hadoop2.5.1 (1)
- hadoop (4)
- eclipse (1)
- hdfs fs (1)
- elipse hadoop plugin (1)
- PHP相关知识 (1)
- js (1)
- jquery (1)
- json (1)
- xml (1)
- dom (1)
- html.regex (1)
- 网络知识 (1)
- nginx (1)
- docker (1)
- 测试 (1)
- nodejs (1)
- iptables (1)
- linux gitlab (1)
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
web页面调用window.print()函数实现打印的功能 -
hxdtech:
非常感谢!
我在学习ibatis时的培训ppt -
zmwxiaoming:
what 能连数据库不错
SOLR的学习整理 -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java获取当前操作系统的信息 -
huanzei:
整理的不错,
oracle lpad函数
先贴以下代码:
package com.hua.md5.test; import java.io.*; import java.security.*; public class HashFile { /** * @param args */ public static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static void main(String[] args) { String fileName = "F:\\soft\\Firefox.exe"; String hashType = "MD5"; try { System.out.println(hashType + " == " + getHash(fileName, hashType)); hashType = "SHA1"; System.out.println(hashType + " == " + getHash(fileName, hashType)); hashType = "SHA-256"; System.out.println(hashType + " == " + getHash(fileName, hashType)); hashType = "SHA-384"; System.out.println(hashType + " == " + getHash(fileName, hashType)); hashType = "SHA-512"; System.out.println(hashType + " == " + getHash(fileName, hashType)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static String getHash(String fileName, String hashType) throws Exception { InputStream fis; fis = new FileInputStream(fileName); byte[] buffer = new byte[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; while ((numRead = fis.read(buffer)) > 0) { md5.update(buffer, 0, numRead); } fis.close(); return toHexString(md5.digest()); } public static String toHexString(byte[] b) { StringBuilder sb = new StringBuilder(b.length * 2); for (int i = 0; i < b.length; i++) { sb.append(hexChar[(b[i] & 0xf0) >>> 4]); sb.append(hexChar[b[i] & 0x0f]); } return sb.toString(); } }
关于java的MD5算法:主要使用MessageDigest类。
public abstract class MessageDigest
此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。
MessageDigest 对象开始被初始化。该对象通过使用 update
方法处理数据。任何时候都可以调用 reset
方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest
方法之一完成哈希计算。
对于给定数量的更新数据,digest
方法只能被调用一次。digest
被调用后,MessageDigest 对象被重新设置成其初始状态。
代码解析:
String fileName = "F:\\soft\\Firefox.exe";//文件的位置 String hashType = "MD5"; //类型 try { System.out.println(hashType + " == " + getHash(fileName, hashType)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
public static String getHash(String fileName, String hashType) throws Exception { InputStream fis; fis = new FileInputStream(fileName);//读取文件 byte[] buffer = new byte[1024]; MessageDigest md5 = MessageDigest.getInstance(hashType); int numRead = 0; while ((numRead = fis.read(buffer)) > 0) { md5.update(buffer, 0, numRead); } fis.close(); return toHexString(md5.digest()); }
getInstance()方法
public static MessageDigest getInstance (String algorithm) throws NoSuchAlgorithmException
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference
》中的附录 A。
NoSuchAlgorithmException
- 如果算法在调用方环境中不可用。public static MessageDigest getInstance (String algorithm, String provider) throws NoSuchAlgorithmException , NoSuchProviderException
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference
》中的附录 A。provider
- 提供程序的名称。
NoSuchAlgorithmException
- 如果请求的提供程序提供的包中不存在该算法。
NoSuchProviderException
- 如果提供程序在环境中不可用。
IllegalArgumentException
- 如果提供程序的名称为 null 或空。update
public void update (byte input)
input
- 用于更新摘要的字节。<!-- -->
update
public void update (byte[] input, int offset, int len)
input
- 字节数组。offset
- 字节数组中的偏移量,操作从此处开始。len
- 要使用的字节数,始于 offset
。update
public void update (byte[] input)
input
- 字节数组。update
public final void update (ByteBuffer input)
input.position()
处的 input.remaining()
个字节更新摘要。一旦返回,该缓冲区的位置将等于它的界限;它的界限将不会更改。
input
- ByteBufferdigest
public byte[] digest ()
<!-- -->
digest
public int digest (byte[] buf, int offset, int len) throws DigestException
buf
- 存放计算摘要的输出缓冲区offset
- 输出缓冲区中的偏移量,从此处开始存储摘要。len
- 在 buf 中分配给摘要的字节数
buf
中的字节数
DigestException
- 如果发生错误。digest
public byte[] digest (byte[] input)
update(input)
,向 update
方法传递 input
数组,然后调用 digest()
。
input
- 在完成摘要计算前要更新的输入。
发表评论
-
centos6.5 hadoop伪分布式搭建
2017-01-10 10:41 25打算整理下machine learn ,再次安装 ... -
springboot
2016-12-29 11:13 2381微服务,现在是一个越来越热的东西,软件架构发展到 ... -
elk安装记录
2016-12-27 18:04 980在centos6.5上安装elk,记录下安装过程和 ... -
dubbo服务框架
2016-12-23 15:40 480上一篇文章介绍了zookeeper,作为服务 ... -
zookeeper服务注册中心配置
2016-12-22 11:40 1663用zookeeper有一段时间了,把配置做下简 ... -
OS X 安装java开发环境
2016-12-03 23:29 591... -
关于Restful API 的设计
2015-06-12 13:32 2275Restful API的流行,很大程度上被当前的移动 ... -
Jvisualvm远程连接tomcat配置:
2015-05-12 16:16 781JvisualVm 监控远程Tomcat,需要在To ... -
jdbc mybatis hibernate springJDBC的一些理解
2015-01-15 17:10 7064... -
Java 的ExecutorService
2015-01-15 11:45 1216早期在Java5以前,我们做多线程程序,一般都 ... -
spring的IOC和AOP
2015-01-14 16:47 2352关于Spring,大家都是耳熟 ... -
java 的线程安全
2014-12-30 14:43 959现代CPU基本都是多核,支持 ... -
JVM ClassLoader
2014-12-25 16:33 936JVM在加载类的时候,都是通过ClassLoad ... -
minor Gc ,Full Gc
2014-12-24 17:22 2102在发生Minor gc之前,虚拟机会先检查老年带最 ... -
Java的主要垃圾回收器
2014-12-24 16:33 1307对象 ... -
JVM的内存结构的一点理解
2014-12-24 11:30 777... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 1235试想,一个省有100个处理节点需要 ... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 0试想,一个省有100个处理节点需要 ... -
关于Linux的Ulimit参数
2014-12-22 12:13 1275JVM 64位平台与32位平台 ... -
一种表格数据比对的方法
2014-12-19 16:59 1047假设有连个库,一个是生产库,一个是备份库,在一个特 ...
相关推荐
MD5(Message-Digest Algorithm 5)是一种广泛用于数据安全的哈希函数,它能够将任意长度的数据转化为固定长度的128位(16字节)摘要,通常以32位十六进制数的形式表示。在JS和JAVA中生成MD5值的主要目的是确保数据...
MD5算法是一种非对称的加密算法,它将输入的信息通过一系列复杂的数学运算,最终得到一个128位的摘要信息,通常以32位的16进制字符串形式表示。由于MD5的单向性,即从原始信息恢复原始数据非常困难,因此常用于数据...
这个摘要信息通常是一个128位的二进制数,通常以32位的十六进制形式表示。在Java编程语言中,生成文件的MD5码是常见的需求,例如用于文件校验、数据完整性的验证等。这篇博客“JAVA 生成文件的MD5码”可能讲述了如何...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成一个固定长度的输出,通常为128位,以32位十六进制数字的形式表示。在Java中,MD5常用于数据校验、密码存储等场景,...
标题中的“文件MD5值检测源码.rar”可能包含了一组用于计算和验证文件MD5值的编程源代码。这通常涉及以下关键知识点: 1. **MD5算法原理**:MD5是一种单向散列函数,它将任意长度的数据转化为固定长度的128位(16...
MD5(Message-Digest Algorithm 5)是一种广泛应用于信息安全领域的哈希函数,它能将任意长度的数据转换为固定长度的128位(16字节)摘要,通常以32位十六进制数的形式表示。这个算法由Ron Rivest在1991年设计,主要...
例如,当你下载一个大文件时,服务器会提供该文件的MD5校验码,你可以通过计算本地文件的MD5值并与服务器提供的值对比,确保文件在传输过程中没有被篡改。 然而,由于MD5的安全性问题,对于敏感信息如用户密码,...
6. **输出MD5值**:将生成的MD5值以32位的16进制字符串形式输出,用于比较或记录。 从提供的文件列表来看,`FileMD5.sln`是一个Visual Studio解决方案文件,可能包含了实现文件MD5计算的C#项目。`release`目录则...
5. **转换为十六进制字符串**:通常我们以十六进制字符串形式展示MD5值,所以需要将字节数组转换为字符串。 ```java StringBuilder hexString = new StringBuilder(); for (byte b : digestBytes) { hexString....
6. **MD5的应用**:在Java中,MD5常用于验证文件完整性,比如下载文件后检查MD5值是否与原始文件一致。此外,过去也曾用于密码存储,但现在通常会使用更安全的哈希算法如SHA-256,并配合盐值和迭代次数增加安全性。 ...
总结来说,Java MD5 Check Tool 是一个用于计算文件MD5校验和的工具,通过它可以快速验证文件是否未被篡改。这个工具的核心是Java的`MessageDigest`类,它利用MD5算法生成文件的唯一标识。用户可以利用这个工具来...
MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的哈希..."MD5-mask"可能是这个工具类的源代码文件,通过查看这个文件,我们可以学习如何在Java中实现MD5加密,或者直接在项目中引入这个类以快速实现MD5功能。
根据提供的文件信息,我们可以深入探讨MD5加密技术及其在Java中的实现细节。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,用于生成一个固定长度(通常是128位)的散列值或摘要。这种摘要通常用于...
在Java编程语言中,MD5算法通常用于生成固定长度的128位(16字节)摘要,这个摘要通常以32位十六进制数字的形式呈现。 在给定的"MD5_java.rar"压缩包中,包含了两个文件:`MD5_java.java`和`www.pudn.com.txt`。`MD...
这个过程是不可逆的,也就是说,从MD5值无法直接还原原始数据。MD5在很多场景下被用作数据完整性校验,比如验证文件的下载是否完整、密码存储等。 在JAVA中,生成MD5校验码涉及到以下几个关键知识点: 1. **`java....
1. **转换字节数组为16进制字符串**:将字节数组转换成16进制形式的字符串表示。 2. **转换单个byte为16进制字符串**:将一个byte值转换为其对应的16进制字符串。 3. **MD5编码**:对输入的原始字符串进行MD5加密...
在Android应用中,我们可以使用Java的`java.security.MessageDigest`类来计算文件的MD5值。以下是一个简单的步骤: 1. **导入相关库**:在Java代码中,你需要导入`java.security.MessageDigest`和`java.io....
在实际应用中,MD5常用于验证文件完整性,比如下载文件后,可以计算本地文件的MD5值并与服务器提供的MD5值进行对比,确保文件在传输过程中未被篡改。对于密码存储,虽然MD5已被认为不够安全,因为存在碰撞攻击的可能...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的128位(16字节)摘要,通常以32位十六进制数的形式表示。MD5的主要用途是验证数据的完整性和一致性,比如...