标签: digest

Java的摘要与外部实用程序的结果不同

我编写了一个简单的Java类来生成Windows Calculator文件的哈希值.我在用Windows 7 Professional with SP1.我曾尝试Java 6.0.29Java 7.0.03.有人能告诉我为什么我从Java与(很多!)外部实用程序和/或网站获得不同的哈希值?外部的所有东西都相互匹配,只有Java返回不同的结果.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.zip.CRC32;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Checksum 
{
    private static int size = 65536;
    private static File calc = new File("C:/Windows/system32/calc.exe");

    /*
        C:\Windows\System32\calc.exe (verified via several different utilities)
        ----------------------------
        CRC-32b = 8D8F5F8E
        MD5     = 60B7C0FEAD45F2066E5B805A91F4F0FC
        SHA-1   = 9018A7D6CDBE859A430E8794E73381F77C840BE0
        SHA-256 = 80C10EE5F21F92F89CBC293A59D2FD4C01C7958AACAD15642558DB700943FA22
        SHA-384 = 551186C804C17B4CCDA07FD5FE83A32B48B4D173DAC3262F16489029894FC008A501B50AB9B53158B429031B043043D2
        SHA-512 = 68B9F9C00FC64DF946684CE81A72A2624F0FC07E07C0C8B3DB2FAE8C9C0415BD1B4A03AD7FFA96985AF0CC5E0410F6C5E29A30200EFFF21AB4B01369A3C59B58


        Results …
Run Code Online (Sandbox Code Playgroud)

java windows md5 wow64 digest

195
推荐指数
1
解决办法
1万
查看次数

RoR - MD5代

如何在Rails 3.0中使用MD5加密字符串? pass = MD5.hexdigest(pass) 在模型中产生uninitialized constant MyModel::MD5

ruby hash md5 digest

76
推荐指数
1
解决办法
6万
查看次数

在Android中使用DigestUtils找不到的方法

我正在尝试使用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)

apache encryption android sha digest

71
推荐指数
3
解决办法
4万
查看次数

两条消息具有相同MD5摘要和相同SHA1摘要的可能性有多大?

给定两个不同的消息,A和B(可能是20-80个字符的文本,如果大小完全重要),A的MD5摘要与B的MD5摘要相同 A的SHA1摘要的概率是多少?与B的SHA1摘要相同?那是:

(MD5(A) == MD5(B)) && (SHA1(A) == SHA1(B))
Run Code Online (Sandbox Code Playgroud)

假设没有恶意意图,即没有选择消息以找到冲突.我只是想知道这种情况发生的可能性.

我认为机会是"天文数字低",但我不确定如何验证这一点.

更多信息:可能消息池的大小受到限制,但是很大(几亿).生日悖论的情况正是我所担心的.

math md5 sha1 digest hash-collision

49
推荐指数
2
解决办法
1万
查看次数

如何在Android中计算字符串的SHA-256哈希值?

我想在Android中获取字符串的SHA256.

这是我要匹配的PHP代码:

echo bin2hex(mhash(MHASH_SHA256,"asdf"));
//outputs "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b"
Run Code Online (Sandbox Code Playgroud)

现在,在Java中,我正在尝试执行以下操作:

            String password="asdf"
            MessageDigest digest=null;
    try {
        digest = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
       digest.reset();
       try {
        Log.i("Eamorr",digest.digest(password.getBytes("UTF-8")).toString());
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

但这打印出来:"a42yzk3axdv3k4yh98g8"

我在这做错了什么?


解决方案感谢erickson:

 Log.i("Eamorr",bin2hex(getHash("asdf")));

 public byte[] getHash(String password) {
       MessageDigest digest=null;
    try {
        digest = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
       digest.reset();
       return digest.digest(password.getBytes());
 }
static String bin2hex(byte[] data) …
Run Code Online (Sandbox Code Playgroud)

php java android sha digest

47
推荐指数
3
解决办法
5万
查看次数

在Ruby中创建数字,字符串,数组或散列的md5哈希

我需要在Ruby中为变量创建一个签名字符串,其中变量可以是数字,字符串,散列或数组.散列值和数组元素也可以是这些类型中的任何一种.

此字符串将用于比较数据库中的值(在本例中为Mongo).

我的第一个想法是创建一个JSON编码值的MD5哈希,如下所示:( body是上面提到的变量)

def createsig(body)    
  Digest::MD5.hexdigest(JSON.generate(body))
end
Run Code Online (Sandbox Code Playgroud)

这几乎可以工作,但JSON.generate不会每次以相同的顺序对哈希的键进行编码,因此createsig({:a=>'a',:b=>'b'})并不总是相等createsig({:b=>'b',:a=>'a'}).

创建符合此需求的签名字符串的最佳方法是什么?

注意:对于我们之间的细节,我知道你不能JSON.generate()是数字或字符串.在这些情况下,我只是MD5.hexdigest()直接打电话.

ruby md5 digest

40
推荐指数
2
解决办法
4万
查看次数

从Message Digest获取MD5字符串

我理解它是如何工作的但如果我想将MD5打印成String我该怎么做?

public static void getMD5(String fileName) throws Exception{
    InputStream input =  new FileInputStream(fileName);
    byte[] buffer = new byte[1024];

    MessageDigest hash = MessageDigest.getInstance("MD5");
    int read;
    do {
        read = input.read(buffer);
        if (read > 0) {
            hash.update(buffer, 0, read);
        }
    } while (read != -1);
    input.close();
}
Run Code Online (Sandbox Code Playgroud)

java message md5 digest

31
推荐指数
6
解决办法
7万
查看次数

HTTP摘要式身份验证与SSL

从性能,安全性和灵活性的角度来看,HTTP摘要式身份验证和SSL有什么区别?

ssl http-authentication digest

23
推荐指数
2
解决办法
2万
查看次数

XML签名:如何计算摘要值?

我有这样的XML

<?xml version="1.0" encoding="utf-8"?>
<foo>
  <bar>
    <value>A</value>
  </bar>
  <bar>
    <value>B</value>
  </bar>
  <baz>
    <value>C</value>
  </baz><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>WqpRWHxXA0YgH+p3Sxy6hRo1XIk=</DigestValue></Reference></SignedInfo><SignatureValue>EoRk/GhR4UA4D+8AzGPPkeim1dZrlSy88eF73n/T9Lpeq9IxoGRHNUA8FEwuDNJuz3IugC0n2RHQQpQajiYvhlY3XG+z742pgsdMfFE4Pddk4gF1T8CVS1rsF7bjX+FKT/c8B2/C8FNgmfkxDlB/ochtbRvuAGPQGtgJ3h/wjSg=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIB8zCCAVygAwIBAgIQgfzbrIjhLL9FobStI2ub3zANBgkqhkiG9w0BAQQFADATMREwDwYDVQQDEwhUZXN0ZUFjbjAeFw0wMDAxMDEwMDAwMDBaFw0zNjAxMDEwMDAwMDBaMBMxETAPBgNVBAMTCFRlc3RlQWNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO+yAZ8/qJbhSVH/+2wMmzix3jM/CExb6sTgaiPwe6ylcHgF45zeQDq06OSJZCSns34em/ULINZddDf8z0b9uk/2sOGr1pYqsunLLBvw2FkvWJQDkhx2SzCm8v4xGX2kyXNbjiY/K56oPOMjpayKoAFnnvk7p2iFAxNZK/6lpZ7wIDAQABo0gwRjBEBgNVHQEEPTA7gBCOOHcajwnATYZ0t6w7LVU0oRUwEzERMA8GA1UEAxMIVGVzdGVBY26CEIH826yI4Sy/RaG0rSNrm98wDQYJKoZIhvcNAQEEBQADgYEABL9Qhi6f1Z+/t8oKXBQFx3UUsNF9N2o4k6q1c3CKZYqx2E/in+nARIYRdh5kbeLfomi6GIyVFeXExp8crob3MAzOQMvXf9+ByuezimMPIHDvv0u3kmmeITXfoZrHCDxLoWWlESN1owBfKPqe7JKAuu9ORDC0pUiUfCHWxCoqNos=</X509Certificate></X509Data></KeyInfo></Signature>
</foo>
Run Code Online (Sandbox Code Playgroud)

如何创建引用中的摘要值(WqpRWHxXA0YgH + p3Sxy6hRo1XIk =)?我的意思是如何手动计算这个值?

xml digest digital-signature xml-signature

23
推荐指数
3
解决办法
5万
查看次数

为什么NaN和Inf-Inf的哈希值不同?

我经常使用这个哈希函数,即记录数据帧的值.想看看我是否能打破它.为什么这些哈希值不相同?

这需要摘要包.

纯文本输出:

> digest(Inf-Inf)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(NaN)
[1] "4e9653ddf814f0d16b72624aeb85bc20"
> digest(1)
[1] "6717f2823d3202449301145073ab8719"
> digest(1 + 0)
[1] "6717f2823d3202449301145073ab8719"
> digest(5)
[1] "5e338704a8e069ebd8b38ca71991cf94"
> digest(sum(1, 1, 1, 1, 1))
[1] "5e338704a8e069ebd8b38ca71991cf94"
> digest(1^0)
[1] "6717f2823d3202449301145073ab8719"
> 1^0
[1] 1
> digest(1)
[1] "6717f2823d3202449301145073ab8719"
Run Code Online (Sandbox Code Playgroud)

额外的怪异.等于NaN的计算具有相同的哈希值,但NaN的哈希值不等效:

> Inf - Inf
[1] NaN
> 0/0
[1] NaN
> digest(Inf - Inf)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(0/0)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(NaN)
[1] "4e9653ddf814f0d16b72624aeb85bc20"    
Run Code Online (Sandbox Code Playgroud)

math hash r digest

21
推荐指数
2
解决办法
1063
查看次数