在这次项目中需要对图片MD5来确定一张图片的唯一性,如果两个图片MD5相同就认定问两张图片是同一张图,只不过是被转载的。
在多次查找资料后写出来下面的通用类
1、将图片转换成二进制数组
有一点很重要 使用了MessageDigest类 下面有该类的介绍
2。、调用方法
Java 加密技术:消息摘要。
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。
消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5
类 java.security.MessageDigest
java.lang.Object | +----java.security.MessageDigest
-
public abstract class
MessageDigest
extends
Object
MessageDigest 提供了消息摘要算法,如 MD5 或 SHA,的功能。消息摘要是安全单向散列函数,它采用任意大小的数据并输出一个固定长度的散列值。
象 Java 安全性中的其它基于算法的类一样,MessageDigest 有两个主要的组件:
-
消息摘要 API ( 应用程序接口 )
- 这是需要消息摘要服务的应用调用的方法的接口。这个 API 由所有公有方法组成。 消息摘要 SPI ( 服务提供者接口 )
-
该接口是由提供特殊算法的提供者实现的接口。它由所有名字前缀为
engine 的方法组成。每个这样的方法由具有相应名字的公有 API 方法调用。例如,
engineReset
方法由reset
方法调用。SPI 方法是抽象的;提供者必须提供一个具体的实现。
MessageDigest 对象在启动时被初始化。使用 update 方法处理数据。在任何地方都可调用 reset 复位摘要。一旦所有需要修改的数据都被修改了,将调用一个 digest 方法完成散列码的计算。
对于给定次数的修改,只能调用 digest
方法一次。在调用 digest
之后,MessageDigest 对象被复位为初始化的状态。