• 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();
    	}
    }
    



  • 相关阅读:
    burp用命令行一键启动出现错误“a java exception has occurred”的解决
    fofa语法
    使用LaZagne获取各种密码
    获取网站ico图标以及使用shodan的http.favicon.hash方法搜同ico站点
    使用nmap-converter.py整理nmap导出的xml记录为xls文件
    使用wafw00f工具识别waf类型
    反射型XSS中的POST型复现
    锐捷统一上网行为管理与审计系统信息泄露漏洞复现(CNVD-2021-14536)
    软件工程 数组
    c语言4
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299619.html
Copyright © 2020-2023  润新知