java sha1加密ascii码_请问下面java的Sha1加密在c#中对应要怎么写?
/**
* 读取指定文件块数据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#中对应要怎么写?相关推荐
- java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算
1. 测试目标 使用LKT系列加密芯片进行SHA1摘要运算并使用openssl验证正确性 2. 测试环境 本示例LKT加密芯片运行环境为windows系统.测试软件LCS KIT.LKT-K100开发 ...
- java 并发框架源码_某网Java并发编程高阶技术-高性能并发框架源码解析与实战(云盘下载)...
第1章 课程介绍(Java并发编程进阶课程) 什么是Disruptor?它一个高性能的异步处理框架,号称"单线程每秒可处理600W个订单"的神器,本课程目标:彻底精通一个如此优秀的 ...
- java英文版怎么汉化_请问,java中,将下面的英文名字变为中文 该怎样输出?
如题,下面是代码------------------------------importjava.io.*;publicclassRandomFileDemo{publicstaticvoidmain ...
- java文章管理系统源码_融成Java后台网站内容管理系统 v3.2.1
融成Java后台网站内容管理系统是一款基于Java语言开发的功能强大的内容管理系统.成功实现了既能够管理包括企业官网.门户站点.图片视频软件等上传下载网站.博客网站.电商购物网站.物流管理网站等复杂多 ...
- java生成md5校验码_如何用java获取ftp服务器上文件的md5校验码?
package homework.dao; import java.security.*; public class getmd5 { //全局数组 private final static stri ...
- Java中文与ASCII码的转换
今天在研究Java中编码的时候,看到了Java中ascii码的强大.写了一个CoderUtils.java,以后会扩展它. package com.xingxd.study.test; import ...
- java字符与ASCII码相互转换
java字符与ASCII码相互转换 一 .遍历字符串 二. java 字符 转换 ASCII码 三. java ASCII码 转换 字符 字符串: String s ="abcdefg&qu ...
- java生成二维码到文件,java生成二维码转成BASE64
java生成二维码到文件,java生成二维码转成BASE64 如题,利用java和第三方库,把指定的字符串生成二维码,并且把二维码保存成图片,转换成BASE64格式. 需要的jar文件: packag ...
- java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
using System; using System.IO; using System.Data; using System.Text; using System.Diagnostics; using ...
最新文章
- 还需要“attention”吗?一堆“前馈层”在ImageNet上表现得出奇得好
- Transformers包tokenizer.encode()方法源码阅读笔记
- busybox编译笔记
- 计算机组成原理 陈泽,江西师范大学-计算机组成原理的期末复习.doc
- zookeeper学习一
- 十项全能的java大神
- 数据绑定 单个对象和集合绑定差异
- 牛客竞赛,ZUST第17届公开赛,摸鱼记(A、DEFGH、J题解,3/7题代码)
- 使用 redis 减少 秒杀库存 超卖思路 (转)
- OpenGL学习脚印:深度測试(depth testing)
- 性能测试--jmeter中XPath断言【10】
- 大学英语四六级13年12月大改革应对办法全套复习规划
- 计算机windows7桌面是指什么,认识Windows 7桌面,增加了哪些功能,它是应用程序操作的出发点...
- 报错:Exception opening socket
- azkaban短信报警功能和项目依赖功能实现
- 前端学习日志之复刻百度新闻女人专栏
- mysql int 时间戳转换_MySQL时间戳相互转换
- c++字符串转换为数字(stoi, stol, stoul, stoull, stof, stod, stold)
- Python基础-映射
- windows10 企业版激活处于通知模式怎么处理
热门文章
- Android布局优化之include、merge、ViewStub
- css 伪元素::after与::before的使用
- asp.net[web.config] httphandlers 与实现自由定义访问地址
- mongoDB学习笔记(一)
- Linux下JDK环境的配置
- 十五天精通WCF——第六天 你必须要了解的3种通信模式
- android xUtils的使用
- [51单片机学习笔记ONE]-----LED灯的多种使用方法
- WordPress数据库优化技巧
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...