我希望使用Java来获取文件的MD5校验和.我真的很惊讶,但我找不到任何显示如何获取文件的MD5校验和的内容.
怎么做?
我正在使用一些示例java代码来制作md5哈希.一部分将结果从字节转换为十六进制数字的字符串:
byte messageDigest[] = algorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0;i<messageDigest.length;i++) {
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
}
Run Code Online (Sandbox Code Playgroud)
但是,由于toHexString显然会从前导零中掉落,所以它并不常用.那么,从字节数组到保持前导零的十六进制字符串的最简单方法是什么?
通过环顾四周和一般的互联网,我找到了Bouncy Castle.我想使用Bouncy Castle(或其他一些免费提供的实用程序)在Java中生成一个SHA-256 Hash of String.看看他们的文档,我似乎找不到任何我想做的好例子.这里有人可以帮帮我吗?
我正在使用Java将文件上传到S3 - 这是我到目前为止所得到的:
AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials("XX","YY"));
List<Bucket> buckets = s3.listBuckets();
s3.putObject(new PutObjectRequest(buckets.get(0).getName(), fileName, stream, new ObjectMetadata()));
Run Code Online (Sandbox Code Playgroud)
正在上传文件,但在我未设置内容长度时会引发警告:
Run Code Online (Sandbox Code Playgroud)com.amazonaws.services.s3.AmazonS3Client putObject: No content length specified for stream > data. Stream contents will be buffered in memory and could result in out of memory errors.
这是我上传的文件,stream变量是一个InputStream,我可以从中得到这样的字节数组:IOUtils.toByteArray(stream).
所以,当我尝试设置内容长度和MD5(从这里取得)像这样:
// get MD5 base64 hash
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(IOUtils.toByteArray(stream));
byte[] resultByte = messageDigest.digest();
String hashtext = new String(Hex.encodeHex(resultByte));
ObjectMetadata meta = new ObjectMetadata(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JDK 1.6在Android 2.3.1中使用库DigestUtils,但是在执行应用程序时出现以下错误:
Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
在这里你有堆栈跟踪:
02-03 10:25:45.153: I/dalvikvm(1230): Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
02-03 10:25:45.153: W/dalvikvm(1230): VFY: unable to resolve static method 329: Lorg/apache/commons/codec/binary/Hex;.encodeHexString ([B)Ljava/lang/String;
02-03 10:25:45.153: D/dalvikvm(1230): VFY: replacing opcode 0x71 at 0x0004
02-03 10:25:45.153: D/dalvikvm(1230): VFY: dead code 0x0007-0008 in Lorg/apache/commons/codec/digest/DigestUtils;.shaHex ([B)Ljava/lang/String;
02-03 10:25:45.163: D/AndroidRuntime(1230): Shutting down VM
02-03 10:25:45.163: W/dalvikvm(1230): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-03 10:25:45.173: E/AndroidRuntime(1230): FATAL EXCEPTION: main …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,并且在发送到数据库之前有一些我想要加密的字符串.我想要一些安全,易于实现的东西,每次传递相同的数据时都会产生相同的东西,并且最好会产生一个字符串,无论传递给它的字符串有多大,它都会保持不变.也许我正在寻找哈希.
我在为字符串生成GUID时遇到问题 - 例如:
Guid g = New Guid("Mehar");
Run Code Online (Sandbox Code Playgroud)
如何计算GUID "Mehar"?我得到一个例外.
可能重复:
在Java中生成MD5哈希
嗨,
我想在我的scala代码中计算字符串的MD5哈希值.除了常规的java.security.MessageDigest方法之外,还有什么scala或java库可以用来快速完成吗?
请帮助谢谢
我想知道什么是Java的哈希算法的最佳和最快的实现,尤其是MD5和SHA-2 512(SHA512)或256.我想要一个函数来获取字符串作为参数并返回哈希作为结果.亲爱的
编辑:这是为了将每个URL映射到唯一的哈希.由于MD5在这方面不可靠,我更感兴趣的是找到SHA-2算法的最佳和最快的实现.请注意,我知道即使SHA-2可能会为某些URL生成相同的哈希值,但我可以接受它.
我在我正在处理的应用程序中遇到了一些代码,它只是为了调用UUID字符串上的ORA_HASH函数(文档)而进行数据库调用.它这样做的原因是它需要值来对另一个似乎ORA_HASH用于分区的系统进行服务调用.
我想知道算法的ORA_HASH使用,以便我可以重新实现它,以便为一个无法访问真实数据库的应用程序进行类似的服务调用,更不用说Oracle了.到目前为止,我只能找到相当于Oracle API文档的内容.
只是要非常明确:我需要克隆,ORA_HASH因为这是我控制之外的另一个系统所使用的,我需要与该系统集成.是的,如果可以使用真正标准的算法,如MD5 ,那将是很好的,但我不能,除非这ORA_HASH是在幕后的内容.
建议使用散列算法的答案或注释ORA_HASH无济于事.这个问题具体是关于ORA_HASH,而不是一般的散列或分区.