1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android初级教程:对文件和字符串进行MD5加密工具类

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

时间:2023-12-11 15:02:19

相关推荐

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

转载请注明出处:/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];//一次读取写入10kint 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位为0herString = "0"+herString;//拼接字符串,拼成两位表示}sb.append(herString);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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位为0herString = "0"+herString;//拼接字符串,拼成两位表示}sb.append(herString);}} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}return sb.toString();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。