图片对比的一个思路是将文件转换为二进制文件流,然后对图片二进制流进行MD5编码,比对图片二进制流MD5编码的结果,不过该方法的缺点当同一图片使用不同的压缩算法进行存储后会失效;
public static byte[] getTuPianBytes(String name) {
File file = new File(name);
byte[] tuPianBytes = new byte[(int) file.length()];
InputStream in = null;
try {
in = new FileInputStream(file);
in.read(tuPianBytes);
in.close();
} catch (FileNotFoundException e) {
tuPianLog_NotSame.log("can not find file " + name);
} catch (IOException e) {
tuPianLog_NotSame.log("read picture error " + name);
}
return tuPianBytes;
}
private static byte[] getTuPianFromWeb(String urlAddress) {
URL url = null;
HttpURLConnection conn = null;
byte[] tuPianBytes = null;
try {
url = new URL(urlAddress);
conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == 200) {
InputStream in = conn.getInputStream();
tuPianBytes = readStream(in);
} else if (conn.getResponseCode() == 500) {
throw new PictureNotFoundError("can not found #ADD# picture: "
+ urlAddress);
}
} catch (IOException ioE) {
ioE.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
conn = null;
}
if (url != null) {
url = null;
}
}
return tuPianBytes;
}
private static byte[] readStream(InputStream in) {
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = -1;
while ((length = in.read(buffer)) != -1) {
outstream.write(buffer, 0, length);
}
outstream.close();
in.close();
return outstream.toByteArray();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static String getTuPianMD5(byte[] tuPianBytes) {
if (tuPianBytes == null) {
return "";
}
byte[] strTemp = tuPianBytes;
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(strTemp);
byte[] md = digest.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (NoSuchAlgorithmException ignore) {
return null;
}
}
分享到:
相关推荐
这个类可以实现,java语言下通过对上传文件进行MD5加密,然后将加密值与原来上传的文件加密值进行对比,防止上传重复文件。
MD5计算,可以将文件提取出摘要,进行比对,校验,实现指纹算法
java实现的比对升级工具,很好用。适用于任何补丁生成,以及给项目打补丁。 原理是通过MD5校验值比较
压缩包中包含MD5加密算法的jar包、md5调用用法,请放心使用,如果不能用请通知我.
能够独立编译运行的android的MD5验证程序
MD5文件效验码是一个判断文件是否是相同文件的途径,通过比较两个文件的Md5效验码是否相同来精确判断两个文件是否相同
基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别、1:1比对、1:N比对环境配置 1、下载model( https://download.csdn.net/download/star0206/87325136 ) 文件到本地,并解压出来; 2、下载doc目录...
运用分段读取的方法可以大文件计算文件MD5和sha1的值,来比对两个文件是否完全相同
最简单的MD5加密的工具类,增加用户,登录校验用户的时候,通过此类转化用户的登录密码与数据库的用户信息进行比对
它会去调用UserDetailsService的loadFromUsername,参数是token的username,然后比对password,检查userDetails的一些状态。 如果一切正常,那么会返回Authentication。返回的Authentication的用户名和密码是正确...
使用aes加密算法进行加密解密,实际运用时,可使用加密,加密比对,安全性高,效率快。使用异或位运算实现加密解密比aes算法更快,但安全性有待思考。为什么基本上使用md5对用户密码加密?因为md5算法是不可逆的:对...
seetaface2 Java人脸识别库 - 基于Java开发,包含35个文件,如JAVA...该项目是一个基于中科院seetaface2的人脸识别库,提供了人脸识别、1:1比对、1:N比对等功能,为开发者提供了一个高效、易用的Java人脸识别解决方案。
java中对一串URL进行加密,并建立指定密钥的算法及规则,并建立解密方式进行比对截取解密后的数据。
= -1 ||...){ //放行 chain.doFilter(request,response); return; } ②方式2 单独放置登录页面 login.html login.jsp 4.项目周期 1周时间 项目答辩时间: 5.项目分析: (1)登录功能: ①...
后面在接口鉴权的时候会取出token计算签名MD5(除sign外的url+token),进行比对。 这个demo搭建了一个redis主从复制,具体可以参考:http://download.csdn.net/detail/zhutulang/9585010 数据库使用mysql,脚本在 ...
JavaSE初学者,对源码感兴趣的,想要深度了解ArrayList底层实现、数据结构、add方法、Remove方法、以及自动扩容机制的同学,并且对ArrayList已经有过使用,想要学习它与LinkedList,Vector等的区别,该文档为md文档...
(注意前面亦是使用%JAVA_HOME%\bin的方式把JDK的bin目录添加到PATH中) 一路“确定”,关闭所有窗口,即配置完成。打开一个命令行窗口(在此之前已打开的命令行窗口不能生效),运行如下命令:ant -version。即可...
• 签名,例如md5经常用于判断文章相同,其效率比全文比对效率高 • 局部敏感哈希,例如minhash经常用于判断文章相似 • minhash的原理是,使用子集代表全集合,以子集的相似性模拟全集合的相似性 • 把文章转化为...
每种组件的介绍、使用方法等,请参考组件所在目录的README.md文件 接入maven依赖 <groupId>com.github.jiahaowen</groupId> <artifactId>spring-assistant-component <version>1.0 <dependencies>
半结构化数据只支持数据迁移,并且自动忽略oid已存在的记录Lob对象支持数据迁移,数据校验,数据修复功能注:数据校准功能是比对数据迁移前后的Lob对象大小以及其md5值是否相同,若大小或md5值不相同时,则在脚本...