sha1加密算法

/**
 * sha1算法摘要生成类
 * @author LIUWEN276
 *
 */
public class ShaOne {
private static Logger logger = LoggerFactory.getLogger(PvsnLogType.PVSN_COMMON.getLogName());

private static char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

public static String getSha1(String str) {
if (null == str || 0 == str.length()) {
return null;
}
try {
MessageDigest mdTemp = MessageDigest.getInstance(PvsnConstants.ALGORITHM_SHA1);
mdTemp.update(str.getBytes(PvsnConstants.ENCODER_UTF8));
byte[] md = mdTemp.digest();
int j = md.length;
char[] buf = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}

/**
 * 对文件全文生成摘要
 * 
 * @param file
 *            要加密的文件
 * @return sha1摘要码
 */
public static String getFileSha1(String path) {
File file = new File(path);
if (!file.exists()) {
logger.info("sha1加密摘要文件不存在,path={}", path);
return null;
}
FileInputStream fis = null;
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");

logger.info("摘要长度:" + mdTemp.getDigestLength() * 2);
fis = new FileInputStream(file);
byte[] buffer = new byte[2048];
int length = -1;
logger.info("开始生成摘要");
long s = System.currentTimeMillis();
while ((length = fis.read(buffer)) != -1) {
mdTemp.update(buffer, 0, length);
}
logger.info("摘要生成成功,总用时: " + (System.currentTimeMillis() - s) + "ms");
byte[] md = mdTemp.digest();
int j = md.length;
char[] buf = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
//取byte0 高四位
buf[k++] = hexDigits[byte0 >>> 4 & 0xF];
//取byte0低四位
buf[k++] = hexDigits[byte0 & 0xF];
}
return new String(buf);
} catch (Exception ex) {
logger.error(ex.getMessage());
ex.printStackTrace();
return null;
} finally {
try {
fis.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

/*public static void main(String[] args) {
System.out.println(0xF);
 * String str = getSha1("werjkewrkew"); System.out.println(str);
 * System.out.println(str.length());
 

String path = "D:/shareFile/zip/CCF_20140807_2000386956.zip";
String str = getFileSha1(path);
System.out.println(str);
System.out.println(str.length());

}*/
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值