/**

* 读取指定文件块数据Sha1

*

* @param fis

* @return

*/

private static MessageDigest calSha1(BufferedInputStream fis) {

MessageDigest sha1 = null;

try {

byte[] buffer = new byte[1024];

int numRead = 0;

int total = 0;

sha1 = MessageDigest.getInstance("SHA-1");

while ((numRead = fis.read(buffer)) > 0) {

sha1.update(buffer, 0, numRead);

total += numRead;

if (total >= BLOCK_SIZE) {//每次最多读入4M

break;

}

}

} catch (Exception e) {

e.printStackTrace();

}

return sha1;

}

/**

* 获取hash/etag,根据File文件计算hash值

*

* @param file 文件

* @return

*/

public static String getEtagHash(File file) {

String etagHash = null;

BufferedInputStream fis = null;

try {

if (file.exists()) {

byte[] ret = new byte[21];

long blockCount = blockCount(file.length());

fis = new BufferedInputStream(new FileInputStream(file));

if (blockCount <= 1) { // 文件块数小于等于1块

MessageDigest sha1 = calSha1(fis);

if (null != sha1) {

byte[] input = sha1.digest();

ret[0] = BYTE_LOW_4;

for (int i = 0; i < 20; ++i) {//SHA1算法位20字节

ret[i + 1] = input[i];

}

}

} else {//将所有sha1值按切块顺序拼接

byte[] rec = new byte[(int) blockCount * 20];

ret[0] = BYTE_OVER_4;

int i, cnt = 0;

for (i = 0; i < blockCount; i++) {//每块文件分别计算sha1

MessageDigest sha1 = calSha1(fis);

if (null != sha1) {

byte[] tmp = sha1.digest();

for (int j = 0; j < 20; j++) {

rec[cnt++] = tmp[j];

}

}

}

MessageDigest sha1 = MessageDigest.getInstance("SHA-1");//对拼接好的数据再做sha1计算

sha1.update(rec, 0, (int) blockCount * 20);

byte[] tmp = sha1.digest();

for (i = 0; i < 20; ++i) {//在最前面拼上单个字节,值为0x96

ret[i + 1] = tmp[i];

}

}

etagHash = EncodeUtils.urlsafeEncodeString(ret);

} else {

System.out.println("File[" + file.getAbsolutePath() + "] Not Exist,Cannot Calculate Hash!");

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (fis != null) {

fis.close();

fis = null;

}

} catch (IOException e) {

e.printStackTrace();

}

}

return etagHash;

}

java sha1加密ascii码_请问下面java的Sha1加密在c#中对应要怎么写?相关推荐

  1. java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算

    1. 测试目标 使用LKT系列加密芯片进行SHA1摘要运算并使用openssl验证正确性 2. 测试环境 本示例LKT加密芯片运行环境为windows系统.测试软件LCS KIT.LKT-K100开发 ...

  2. java 并发框架源码_某网Java并发编程高阶技术-高性能并发框架源码解析与实战(云盘下载)...

    第1章 课程介绍(Java并发编程进阶课程) 什么是Disruptor?它一个高性能的异步处理框架,号称"单线程每秒可处理600W个订单"的神器,本课程目标:彻底精通一个如此优秀的 ...

  3. java英文版怎么汉化_请问,java中,将下面的英文名字变为中文 该怎样输出?

    如题,下面是代码------------------------------importjava.io.*;publicclassRandomFileDemo{publicstaticvoidmain ...

  4. java文章管理系统源码_融成Java后台网站内容管理系统 v3.2.1

    融成Java后台网站内容管理系统是一款基于Java语言开发的功能强大的内容管理系统.成功实现了既能够管理包括企业官网.门户站点.图片视频软件等上传下载网站.博客网站.电商购物网站.物流管理网站等复杂多 ...

  5. java生成md5校验码_如何用java获取ftp服务器上文件的md5校验码?

    package homework.dao; import java.security.*; public class getmd5 { //全局数组 private final static stri ...

  6. Java中文与ASCII码的转换

    今天在研究Java中编码的时候,看到了Java中ascii码的强大.写了一个CoderUtils.java,以后会扩展它. package com.xingxd.study.test; import ...

  7. java字符与ASCII码相互转换

    java字符与ASCII码相互转换 一 .遍历字符串 二. java 字符 转换 ASCII码 三. java ASCII码 转换 字符 字符串: String s ="abcdefg&qu ...

  8. java生成二维码到文件,java生成二维码转成BASE64

    java生成二维码到文件,java生成二维码转成BASE64 如题,利用java和第三方库,把指定的字符串生成二维码,并且把二维码保存成图片,转换成BASE64格式. 需要的jar文件: packag ...

  9. java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法

    using System; using System.IO; using System.Data; using System.Text; using System.Diagnostics; using ...

最新文章

  1. 还需要“attention”吗?一堆“前馈层”在ImageNet上表现得出奇得好
  2. Transformers包tokenizer.encode()方法源码阅读笔记
  3. busybox编译笔记
  4. 计算机组成原理 陈泽,江西师范大学-计算机组成原理的期末复习.doc
  5. zookeeper学习一
  6. 十项全能的java大神
  7. 数据绑定 单个对象和集合绑定差异
  8. 牛客竞赛,ZUST第17届公开赛,摸鱼记(A、DEFGH、J题解,3/7题代码)
  9. 使用 redis 减少 秒杀库存 超卖思路 (转)
  10. OpenGL学习脚印:深度測试(depth testing)
  11. 性能测试--jmeter中XPath断言【10】
  12. 大学英语四六级13年12月大改革应对办法全套复习规划
  13. 计算机windows7桌面是指什么,认识Windows 7桌面,增加了哪些功能,它是应用程序操作的出发点...
  14. 报错:Exception opening socket
  15. azkaban短信报警功能和项目依赖功能实现
  16. 前端学习日志之复刻百度新闻女人专栏
  17. mysql int 时间戳转换_MySQL时间戳相互转换
  18. c++字符串转换为数字(stoi, stol, stoul, stoull, stof, stod, stold)
  19. Python基础-映射
  20. windows10 企业版激活处于通知模式怎么处理

热门文章

  1. Android布局优化之include、merge、ViewStub
  2. css 伪元素::after与::before的使用
  3. asp.net[web.config] httphandlers 与实现自由定义访问地址
  4. mongoDB学习笔记(一)
  5. Linux下JDK环境的配置
  6. 十五天精通WCF——第六天 你必须要了解的3种通信模式
  7. android xUtils的使用
  8. [51单片机学习笔记ONE]-----LED灯的多种使用方法
  9. WordPress数据库优化技巧
  10. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...