文档章节

MD5加密类

sky_hebiao
 sky_hebiao
发布于 2016/12/07 10:21
字数 360
阅读 6
收藏 0
点赞 0
评论 0
package com.clpc.core.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.apache.commons.codec.digest.DigestUtils;

public class Md5CaculateUtil {

    public Md5CaculateUtil(){
        
    }
    
    private static char[] hexChar = {
        '0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f',
    };
    
    public static String getHash(String fileName,String hashType) throws IOException, NoSuchAlgorithmException{
        
        File f = new File(fileName);
        System.out.println(" -------------------------------------------------------------------------------");
        System.out.println("|当前文件名称:"+f.getName());
        System.out.println("|当前文件大小:"+(f.length()/1024/1024)+"MB");
        System.out.println("|当前文件路径[绝对]:"+f.getAbsolutePath());
        System.out.println("|当前文件路径[---]:"+f.getCanonicalPath());
        System.out.println(" -------------------------------------------------------------------------------");
        
        InputStream ins = new FileInputStream(f);
        
        byte[] buffer = new byte[8192];
        MessageDigest md5 = MessageDigest.getInstance(hashType);
        
        int len;
        while((len = ins.read(buffer)) != -1){
            md5.update(buffer, 0, len);
        }

        ins.close();
//        也可以用apache自带的计算MD5方法
//        return DigestUtils.md5Hex(md5.digest());
//        自己写的转计算MD5方法
        String ret = toHexString(md5.digest());
        System.out.println(ret);
        return ret;
    }
    
    
    protected static String toHexString(byte[] b){
        StringBuilder sb = new StringBuilder(b.length*2);
        for(int i=0;i<b.length;i++){
            sb.append(hexChar[(b[i] & 0xf0) >>> 4]);
            sb.append(hexChar[b[i] & 0x0f]);
        }
        return sb.toString();
    }
    
    /*
    * 获取MessageDigest支持几种加密算法
    */
//    @SuppressWarnings({ "rawtypes", "unchecked" })
//    private static String[] getCryptolmpls(String serviceType){
//        
//        Set result = new HashSet();
////        all providers
//        Provider[] providers = Security.getProviders();
//        for(int i=0;i<providers.length;i++){
////            get services provided by each provider
//            Set keys = providers[i].keySet();
//            for(Iterator it = keys.iterator();it.hasNext();){
//                String key = it.next().toString();
//                key = key.split(" ")[0];
//                
//                if(key.startsWith(serviceType+".")){
//                    result.add(key.substring(serviceType.length()+1));
//                }else if(key.startsWith("Alg.Alias."+serviceType+".")){
//                    result.add(key.substring(serviceType.length()+11));
//                }
//            }
//        }
//        return (String[]) result.toArray(new String[result.size()]);
//    }
    
    public static void toMD5(String fileName) throws NoSuchAlgorithmException, IOException{
    	String hash = getHash(fileName,"MD5");
        System.out.println("MD5:"+hash);
    }
    
    public static void main(String[] args) throws Exception, Exception {
//        long start = System.currentTimeMillis();
//        System.out.println("开始计算文件MD5值,请稍后...");
        String fileName = "D:\\callcenter\\10\\SND\\10000001#20150617162709.DAT";
//        String hashType = "MD5";
//        String hash = getHash(fileName,hashType);
//        System.out.println("MD5:"+hash);
//        long end = System.currentTimeMillis();
//        System.out.println("一共耗时:"+(end-start)+"毫秒");
    	toMD5(fileName);
    }
}

 

© 著作权归作者所有

共有 人打赏支持
sky_hebiao
粉丝 0
博文 7
码字总数 4148
作品 0
大兴
后端工程师
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(8)----非对称加密、BASE64加密、MD5等常用加密处理

俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。 本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公...

长平狐
2012/08/22
120
0
ASP.Net中MD5和SHA1加密的几种方法

首先简单介绍一下MD5和SHA1: MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出...

tinwai
2009/07/09
0
0
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后回想当时那个加密、解密算法,实在是太单纯了。 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书...

mrliuze
2015/05/27
0
0
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(8)----非对称加密、BASE64加密、MD5等常用加密处理

俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。 本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公...

长平狐
2012/06/11
157
0
Java实现MD5加密及解密的代码实例分享

如果对安全性的需求不是太高,MD5仍是使用非常方便和普及的加密方式,比如Java中自带的MessageDigest类就提供了支持,这里就为大家带来Java实现MD5加密及解密的代码实例分享: 基础:MessageDige...

恒源祥
2016/11/24
49
0
JavaSE——MD5、16位流

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 MD5: 介绍:文件生成一把MD5钥匙,就是给文件产...

凯哥学堂
05/28
0
0
Java 常用工具包--JCake

JCake是整合了目前Java开发过程中使用最多的:字符串处理、日期处理、邮件处理、文件处理、任务调度处理、HTTP请求处理、MD5/AES加密解密处理的一系列工具类,方便开发人员,减少一些不必要的...

江哥一直在
2014/01/09
2.5K
0
iOS 加密的3种方法

//需要导入 #import <CommonCrypto/CommonCryptor.h> ==============MD5加密============ NSString str = @"加密的内容"; //转换成C语言的字符串 const char cStr=[str UTF8String]; //MD5加......

wuc
2016/01/05
37
0
md5和sha加密代码实现

没有用第三方类库,实现md5常规加密、md5二次加密、sha1、sha256、sha384、sha512加密。 作者说:新手可以参照代码学习ios的加密实现。使用详解:http://developerpan.blog.51cto.com/blog/7...

红薯
2013/07/24
2.2K
0
python2-3 md5加密 方法

一采用 哪种加密模块,例如:md5 所需的模块是 hashlib import hashlib 二.生成md5的对象,类是在hashlib.md5() obj = hashlib.md5() 三.采用obj对象的update方法对所需加密的 str 进行加密。...

掉包虾
2016/04/12
52
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用 Python 实现打飞机,让子弹飞吧!

所用技术和软件 python 2.7 pygame 1.9.3 pyCharm 准备工作 安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。 下载好使用的素材。 技术实现 初始化 pygame 首先要...

猫咪编程
5分钟前
0
0
MySQL的行锁和表锁

简单总结一下行锁和表锁。 行锁 每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 表锁 每次操作锁住整张表。开销小,加锁快;不会出...

to_ln
7分钟前
0
0
Java IO类库之字节数组输入流ByteArrayInputStream

一、ByteArrayInputStream字节数组输入流介绍 ByteArrayInputStream是字节数组输入流,继承自InputStream。它的内部包含一个缓冲区,是一个字节数组,缓冲数组用于保存从流中读取的字节数据,...

老韭菜
9分钟前
0
0
iOS安全应该做哪些事情

1. 尽量使用HTTPS协议。 2. 密码提交的时候,密码使用SHA256加密后传输,MD5等经过哈希碰撞已经可以推算出原文。 3. 密码提交的时候,可以加盐。 4. 密码保存在本地的时候,尽量使用钥匙串保...

HOrange
15分钟前
0
0
react native 注意事项

1. 环境参考官网 android studio 必装 java jdk安装 1.8版本(环境建议自己一步一步配置,切记不要 apt ) 2.有改变编译内容发现 会白屏,然后APP消失,请卸载原来的测试 appinfo (连续两次...

304158
21分钟前
0
0
FOMO游戏代码解析

源代码在此处

怎当她临去时秋波那一转
26分钟前
1
0
EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
39分钟前
1
0
编译cjson到dll

https://blog.csdn.net/mengzhisuoliu/article/details/52203724 编译完成后 是纯lua实现的json decode 的10倍以上...

梦想游戏人
49分钟前
0
0
JS基础- Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返...

ZHAO_JH
51分钟前
0
0
Python数据分析numpy(1)

Python开源的科学计算基础库 1.表示N维数组对象ndarray 2.线性代数、傅里叶变换、随机数生成 3.广播函数,整合c++、c 一.数据的维度 1.数据 2.数据维度 3.一维数据 (1)特点 (2)Python中的...

十年磨一剑3344
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部