package org.kr.test.casTest.sha;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;
import javax.mail.MessagingException;
import javax.mail.internet.MimeUtility;
/**
* Computes and verifies digests of files and strings
*
*
* @version $Revision: 1.1 $
*/
public class DigestUtil {
/**
* Command line interface. Use -help for arguments.
*
* @param args the arguments passed in on the command line
*/
public static void main(String[] args) {
String alg = "SHA";
boolean file = false;
if (args.length == 0 || args.length > 4) {
printUsage();
return;
}
for (int i = 0; i < args.length; i++) {
String currArg = args[i].toLowerCase(Locale.US);
if (currArg.equals("-help")
|| currArg.equals("-usage")) {
printUsage();
return;
}
if (currArg.equals("-alg")) {
alg = args[i+1];
}
if (currArg.equals("-file")) {
file = true;
}
}
if (file) {
digestFile(args[args.length - 1], alg);
return ;
} else {
try {
String hash = digestString(args[args.length - 1], alg);
System.out.println("Hash is: " + hash);
return;
} catch (NoSuchAlgorithmException nsae) {
System.out.println("No such algorithm available");
}
}
}
/**
* Print the command line usage string.
*/
public static void printUsage() {
System.out.println("Usage: "
+ "java org.apache.james.security.DigestUtil"
+ " [-alg algorithm]"
+ " [-file] filename|string");
}
/**
* Calculate digest of given file with given algorithm.
* Writes digest to file named filename.algorithm .
*
* @param filename the String name of the file to be hashed
* @param algorithm the algorithm to be used to compute the digest
*/
public static void digestFile(String filename, String algorithm) {
byte[] b = new byte[65536];
int count = 0;
int read = 0;
FileInputStream fis = null;
FileOutputStream fos = null;
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
fis = new FileInputStream(filename);
while (fis.available() > 0) {
read = fis.read(b);
md.update(b, 0, read);
count += read;
}
byte[] digest = md.digest();
StringBuffer fileNameBuffer =
new StringBuffer(128)
.append(filename)
.append(".")
.append(algorithm);
fos = new FileOutputStream(fileNameBuffer.toString());
OutputStream encodedStream = MimeUtility.encode(fos, "base64");
encodedStream.write(digest);
fos.flush();
} catch (Exception e) {
System.out.println("Error computing Digest: " + e);
} finally {
try {
fis.close();
fos.close();
} catchfont-
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
在“rabbitmq-java-client-bin-3.3.4”中,包含了JAR文件,如`amqp-client-3.3.4.jar`,这是实际使用的客户端库,开发者可以通过Maven或Gradle将其作为依赖引入项目。此外,可能还包含示例代码、API文档和其他辅助...
【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境...二、解压 Hadoop 三、设置 Hadoop 环境变量 四、配置 Hadoop 环境脚本 五、安装 winutils 六、重启电脑 七、验证 Hadoop 安装效果
在"rabbitmq-java-client-bin-3.3.4.zip"这个压缩包中,包含的是RabbitMQ的Java客户端库,这是与RabbitMQ服务器通信的一个关键组件。RabbitMQ提供了多种语言的客户端,Java客户端则是针对Java开发者设计的,使得Java...
Qt.for.Windows.3.3.4.商业版.qt-win-commercial-3.3.4.exe
行业教育软件-学习软件-vipkid英语 3.3.4.zip
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
《VC6.0与Qt3.3.4:经典组合在现代编程中的应用与解析》 Visual C++ 6.0(简称VC6.0)是Microsoft公司开发的一款经典集成开发环境,它在20世纪末至21世纪初广泛应用于Windows平台上的C++应用程序开发。尽管已经过了...
CAS(Central Authentication Service)是一种广泛使用的开放源代码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在本文中,我们将深入探讨如何使用和理解"cas客户端jar包"。 ...
Python matplotlib包 pip install matplotlib-3.1.3-cp37-cp37m-macosx_10_9_x86_64.whl
官方版本,亲测可用
官方版本,亲测可用
Apache Commons Lang 是一个Java工具包,它为Java开发人员提供了许多实用程序类,这些类在Java标准库中并未提供。这个“commons-lang3-3.4-src”是Apache Commons Lang库的3.4版本的源代码,对于学习和理解这个库的...
现(20181020)Qt已升级到5.11,基本不会在有基于Qt3的新开发,但可能仍有老...包中有Qt3.3.4版windows商业版安装程序和许可证。安装时使用许可证会提示已经过期,不能获得Trolltech[狗头]的更新和支持,直接确定即可。
Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...
官方离线安装包,亲测可用
《美年大健康app v3.3.4:健康管理的新里程》 美年大健康app是一款专注于健康医疗领域的安卓应用程序,旨在为用户提供全方位的健康管理服务。版本号v3.3.4代表了软件在功能优化和用户体验上的进一步提升,使得这款...
《美年大健康app v3.3.4 安卓版》是一款专为安卓用户设计的健康管理软件,致力于提供全面的健康服务。该版本为3.3.4,集成了多项改进和优化,旨在提升用户体验并增强功能实用性。在这款应用中,用户可以享受到以下...
标题 "e1000e-3.3.4.tar.gz" 指的是一个Linux系统中的设备驱动程序包,具体来说是针对Intel E1000系列网络接口控制器的e1000e驱动程序的版本3.3.4。这个文件是一个经过gzip压缩的tar归档文件,常见于Linux环境中,...