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();
	}
}
时间: 2024-12-20 13:52:39

Android初级教程:对文件和字符串进行MD5加密工具类的相关文章

《java入门第一季》之对文件和字符串进行MD5加密工具类

上一篇介绍了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; i

对字符串进行MD5加密工具类

public class MD5Utils { public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] btInput = s.getBytes(); //获得MD5摘要算法的 MessageDigest 对象 MessageDigest

wemall app商城源码android开发MD5加密工具类

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供技术员参考学习. package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori

android开发MD5加密工具类(一)

MD5加密工具类整理: 1 package com.gzcivil.utils; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.MessageDigest; 5 import java.security.NoSuchAlgorithmException; 6 7 public class MD5Tool { 8 9 public static String md5(String string) {

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

MD5算法【计算文件和字符串的MD5值】

1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错).任何长度的任意内容都可以用MD5计算出散列值.MD5的前身:MD2.MD3.MD4.介绍工具:CalcMD5.zip.主要作用就是[验明"真身"],字符串文件均可(确保信息传输过程中的完整性.一致性). 2. MD5算法的特点: ????1. 长度固定 ????2. 单向性 ---- 可以通过MD5计算器来计算文件或者字符串的MD5值,但是不可以通过给出的MD5值来推算出文件或者字符串. ???

WP开发笔记——字符串 转 MD5 加密

将字符串进行MD5加密,返回加密后的字符串. 从这里下载Md5.cs文件:http://pan.baidu.com/s/1hq3gpnu. 添加到Windows Phone 7项目中,在代码里面这样调用: 1 String strPassword = "password"; 2 String strPasswordMD5 = JeffWilcox.Utilities.Silverlight.MD5.GetMd5String(strPassword); 3 MessageBox.Show

android加密工具类

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 加密工具类 * Created by Administrator on 2015/10/21 0021. */ public class EncryptUtils { /** * 字符串加密使用MD5算法 */ public final static String encryptMD5(String source) {

Java中将字符串与unicode的相互转换工具类

unicode编码规则 unicode码对每一个字符用4位16进制数表示.具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,如果转化的16进制数的长度不足2位,则在其后补0,然后将高.低8位转成的16进制字符串拼接起来并在前面补上"\u" 即可. 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址:https://www.cnblogs.com/poterliu/p/9579918.html 联系邮箱:[email protected] 联系微信