Android初级教程:对文件和字符串进行MD5加密工具类
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008 点击打开链接
之前写过一篇博文,是针对字符串进行md5加密的。今天对其进行改进,加入针对某个文件,进行md5加密,并获取加密后的值。并把两个功能封装成了工具类,如果有需要这个算法的,可直接使用。
直接上算法封装的工具类代码:
package com.itydl.utils; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /**
* 针对字符串做的md5加密,以及涉及md5操作的工具类
* @author lenovo
*
*/
public class Md5Utils {
/**
* 返回文件的md5值
* @param path
* 要加密的文件的路径
* @return
* 文件的md5值
*/
public static String getFileMD5(String path){
StringBuilder sb = new StringBuilder();
try {
FileInputStream fis = new FileInputStream(new File(path));
//获取MD5加密器
MessageDigest md = MessageDigest.getInstance("md5");
//类似读取文件
byte[] bytes = new byte[10240];//一次读取写入10k
int len = 0;
while((len = fis.read(bytes))!=-1){//从原目的地读取数据
//把数据写到md加密器,类比fos.write(bytes, 0, len);
md.update(bytes, 0, len);
}
//读完整个文件数据,并写到md加密器中
byte[] digest = md.digest();//完成加密,得到md5值,但是是byte类型的。还要做最后的转换
for (byte b : digest) {//遍历字节,把每个字节拼接起来
//把每个字节转换成16进制数
int d = b & 0xff;//只保留后两位数
String herString = Integer.toHexString(d);//把int类型数据转为16进制字符串表示
//如果只有一位,则在前面补0.让其也是两位
if(herString.length()==1){//字节高4位为0
herString = "0"+herString;//拼接字符串,拼成两位表示
}
sb.append(herString);
} } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return sb.toString();
} /**
* 对传递过来的字符串进行md5加密
* @param str
* 待加密的字符串
* @return
* 字符串Md5加密后的结果
*/
public static String md5(String str){
StringBuilder sb = new StringBuilder();//字符串容器
try {
//获取md5加密器.public static MessageDigest getInstance(String algorithm)返回实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = str.getBytes();//把要加密的字符串转换成字节数组
byte[] digest = md.digest(bytes);//使用指定的 【byte 数组】对摘要进行最后更新,然后完成摘要计算。即完成md5的加密 for (byte b : digest) {
//把每个字节转换成16进制数
int d = b & 0xff;//只保留后两位数
String herString = Integer.toHexString(d);//把int类型数据转为16进制字符串表示
//如果只有一位,则在前面补0.让其也是两位
if(herString.length()==1){//字节高4位为0
herString = "0"+herString;//拼接字符串,拼成两位表示
}
sb.append(herString);
}
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return sb.toString();
}
}
Android初级教程:对文件和字符串进行MD5加密工具类的更多相关文章
- 《java入门第一季》之对文件和字符串进行MD5加密工具类
上一篇介绍了MD5加密算法,之前写的代码有些冗余,而且可读性很差.今天把对文本数据的加密,以及获取文件的md5值做一个封装类.代码如下: package com.itydl.utils; import ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- Android修改默认SharedPreferences文件的路径,SharedPreferences常用工具类
import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; ...
- android开发MD5加密工具类(一)
MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...
- MD5算法【计算文件和字符串的MD5值】
1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错).任何长度的任意内容都可以用MD5计算出散列值.MD5的前身:MD2.MD3.MD4.介绍工具:CalcMD5 ...
- WP开发笔记——字符串 转 MD5 加密
将字符串进行MD5加密,返回加密后的字符串. 从这里下载Md5.cs文件:http://pan.baidu.com/s/1hq3gpnu. 添加到Windows Phone 7项目中,在代码里面这样调 ...
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- Linux下对字符串进行MD5加密
Linux下对字符串进行MD5加密 比如要用MD5在linux下加密字符串“test",可以使用命令:$ echo -n test|md5sum098f6bcd4621d373cade4e8 ...
- Java中将字符串与unicode的相互转换工具类
unicode编码规则 unicode码对每一个字符用4位16进制数表示.具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,如果转化的16进制数的长度不足2位,则在其后补0 ...
随机推荐
- ●BZOJ 4008 [HNOI2015]亚瑟王
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4008题解: 概率dp,神仙题 如果我们可以求出每种牌被取到的概率f,那么最后期望造成的伤害也 ...
- hdu 5008 查找字典序第k小的子串
Boring String Problem Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- poj 2425 AChessGame(博弈)
A Chess Game Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 3791 Accepted: 1549 Desc ...
- 51Nod 1196 字符串的数量
用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以 ...
- hdu 5637 BestCoder Round #74 (div.2)
Transform Accepts: 7 Submissions: 49 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072 ...
- bzoj3930[CQOI2015]选数 容斥原理
3930: [CQOI2015]选数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1383 Solved: 669[Submit][Status] ...
- JavaTCP和UDP套接字编程
在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...
- intellij配置hibernate自动生成hbm.xml文件
1.首先创建一个Java web项目,这里因为已经在整个项目中配置好tomcat了,所以我是直接创建module的,其实和创建project的配置方法一样,创建的时候选择Web Application ...
- 59. Spiral Matrix II(中等,同54题)
Given an integer \(n\), generate a square matrix filled with elements from 1 to \(n^2\) in spiral or ...
- Jmeter_ForEach控制器实现网页爬虫
一直以来,爬虫似乎都是写代码去实现的,今天像大家介绍一下Jmeter如何实现一个网页爬虫! Jmeter的爬虫原理其实很简单,就是对网页提交一个请求,然后把返回的所有href提取出来,利用ForEac ...