`
huanyq2008
  • 浏览: 166529 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

取文件MD5的应用

阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; 

public class MD5Util {
/**
* 默认的密码字符串组合,apache校验下载的文件的正确性用的就是默认的这个组合
*/
protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };
protected static MessageDigest messagedigest = null;
static{
   try{
    messagedigest = MessageDigest.getInstance("MD5");
   }catch(NoSuchAlgorithmException nsaex){
    System.err.println(MD5Util.class.getName()+"初始化失败,MessageDigest不支持MD5Util。");
    nsaex.printStackTrace();
   }
} 

/**
* 适用于上G大的文件
* @param file
* @return
* @throws IOException
* 此方法慎用,FileChannel.map后不会释放资源,会导致文件被锁定
*/
public static String getFileMD5String(File file) throws IOException {
   FileInputStream in = new FileInputStream(file);
   FileChannel ch = in.getChannel();
   MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
   messagedigest.update(byteBuffer);
   String md5Str = bufferToHex(messagedigest.digest());
   byteBuffer.flip();
   ch.close();
   in.close();
   return md5Str; 
} 

public static String MD5File(File file) {
    byte[] buf = new byte[4096]; //这个byte[]的长度可以是任意的。
    MessageDigest md;
    boolean fileIsNull = true;

    try {
        FileInputStream fis = new FileInputStream(file);
        int len = 0;
        md = MessageDigest.getInstance("MD5");

        len = fis.read(buf);
        if (len > 0) {
            fileIsNull = false;
            while (len > 0){
                md.update(buf, 0, len);
                len = fis.read(buf);
            }
        }
        fis.close();
    } catch (Exception e) {
        return null;
    }
    
    if (fileIsNull)
        return null;
    else
        return bufferToHex(md.digest());
}


public static String getMD5String(String s) {
   return getMD5String(s.getBytes());
} 

public static String getMD5String(byte[] bytes) {
   messagedigest.update(bytes);
   return bufferToHex(messagedigest.digest());
} 

private static String bufferToHex(byte bytes[]) {
   return bufferToHex(bytes, 0, bytes.length);
} 

private static String bufferToHex(byte bytes[], int m, int n) {
   StringBuffer stringbuffer = new StringBuffer(2 * n);
   int k = m + n;
   for (int l = m; l < k; l++) {
    appendHexPair(bytes[l], stringbuffer);
   }
   return stringbuffer.toString();
} 


private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
   char c0 = hexDigits[(bt & 0xf0) >> 4];
   char c1 = hexDigits[bt & 0xf];
   stringbuffer.append(c0);
   stringbuffer.append(c1);
} 

public static boolean checkPassword(String password, String md5PwdStr) {
   String s = getMD5String(password);
   return s.equals(md5PwdStr);
} 

}

 

分享到:
评论

相关推荐

    易语言-易语言取MD5的模块

    易语言取MD5的模块源码例程程序应用易语言数据操作支持库的取数据摘要命令取文本的MD5码,可以取32位或16位MD5。三叶易语言自学网

    使用 DFU 协议 的 STM32微控制器的 Android 应用程序编程器_java_代码_相关文件_下载

    此应用程序能够批量擦除 STM32Fx 并使用 .dfu 文件中的固件对其进行闪存。请参阅随附的 youtube 视频进行演示 ainActivity.java 文件中的 USB_VENDOR_ID 和 USB_...更多详情、使用方法,请下载后阅读README.md文件

    pbfunc外部函数扩展

    5 文件哈希算法:MD5 SHA1 RIPEMD160 SHA256 Tiger SHA512 Whirlpool CRC32 6 字符串哈希算法:MD5 SHA1 RIPEMD160 SHA256 Tiger SHA512 Whirlpool CRC32 7 URI编码解码 8 Base64编码解码 里面包含pb的调用demo"&gt;1 ...

    rar压缩软件.rar

    RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使...

    如何编写批处理文件批处理文件批处理文件

    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用&gt; &gt;&gt; ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用...

    无损合并视频文件 V5.32

    经测试分割一段AVI高清视频,如果从头到尾直接复制流媒体,或者同样分割同一片段,得到的文件大小和原始文件比较,精确到一个字节也毫无差异,比较‘分割’后的文件和原始文件的MD5、SHA1、CRC32数值完全相同,...

    vc++ 应用源码包_5

    MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

    PicoRuby 是用于单芯片微控制器的 PicoRuby 编译器与 mruby/c VM 的集成_ruby_代码_相关文件

    RAM:128 KB 或更少(取决于应用程序代码) (32 位架构中的数字) 便携的 仅依赖于标准 C 库,例如 glibc、Newlib 或 Newlib-nano 参考微控制器板 Raspberry Pi Pico - Arm Cortex-M0+,264 KB RAM,2 MB ROM PSoC5...

    vc++ 应用源码包_1

    MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

    计算机应用技术(实用手册)

    这个项目可指定让AGP装置来使用的系统内存大小,这取用大小是PCI内存地址范围的一部份,可分配给图形内存的空间。 Init Display First: 这个项目可选择当系统开机时先行对AGP或是PCI插槽来做初始化的动作。 [AGP...

    微控制器 的 RTOS_C语言_代码_相关文件_下载

    特征: 抢占式或协作式调度(取决于您的配置) 对于电池供电的应用程序可以无滴答声 二进制和计数信号量 具有优先级上限或优先级继承的互斥锁 线程安全通信的队列 ...更多详情、使用方法,请下载后阅读README.md文件

    调试大叔 v2.1.1.rar

    *内置一批动态参数,可应用于URL、页头、参数(如生成随机数、URL编码、MD5、AES、Base64加密解密、时间戳/日期转换、内循环、文件流、HTML转义等); *支持自定义常量设置; *支持协议的代理与模拟环境参数设置(解决...

    vc++ 应用源码包_2

    MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

    vc++ 应用源码包_6

    MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

    vc++ 应用源码包_3

    MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

    精易官方免费模块v3.60版

    1.修复“剪辑板_取文件”的状态错误BUG 感谢 网络注册会员 的提醒,感谢 农夫 的代码 精易模块 V3.57 what’s new:(20131230) 1.删除 "窗口_取位置和大小" 的错误备注部分,感谢 美丽兔兔 的提醒 2.删除“窗口_...

    精易模块[源码] V5.15

    1、新增“效验_取md5_进度”,进度获取文件MD5值,支持大文件,采纳易友【@易模块】建议。 2、改善“程序_禁止重复运行”添加是否显示已运行的参数,此命令由易友【@小爬虫】改进。 3、修正“网页_取网址引用”不...

    1345个易语言模块

    freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec GetStringSize.ec GIF快 照.ec Hex-Dec.ec Hex-Dec1.ec Hex2Dec.ec hide.ec hotkey.ec HTTP.ec http_ec.ec http_ec1.ec HTTP 访问模块 .ec HTTP访问...

    验证码 方案 生成 图 片 例子

    $magic_a 与 $maigc_b 要改动,这样生成的MD5就会不一样。 2. pinimg 的目录设定在 function getPinImg() 中的变量 $path. 到时要改一下的。 3. 对应非 PHP的应用,可以读取 map.txt 来处理。 淘宝上搜索 ...

    C#基类库(苏飞版)

    这里面实现了很多的帮助方法,比如正则验证,加密,解密,MD5加密,字符串的处理等操作。 2.最新的 PageValidate 类 主要是实现了验证,是否为空,是否为数字等。 3.JavascriptHelp 帮助输出简单的JS代码 4.最新...

Global site tag (gtag.js) - Google Analytics