2015-08-18 25 views

回答

1

当我有这样的事情要做,我试着用MD5哈希(在Perl中)。我认为这可能有所帮助: How can I generate an MD5 hash?

+0

的方法感谢MD5散列技术,但是如果已经做了一些更改,那么如何识别该用户修改了同一文件? – Shubhankar

+0

你想知道“哪个用户”修改了吗?或者“具有不同MD5的文件”是完全相同的还是不同的文件? –

+0

是这两个用户和“具有不同MD5的文件”是完全相同的或不同的文件。我的目标是:我必须下载一个文件,然后对其进行修改并上传相同的文件,但在上传时如何检查我是否上传了带有一些修改内容的相同下载文件 – Shubhankar

0

md5文件编码将帮助你。 This is一个如何获得MD5值的工作示例。

public static void main(String[] args)throws Exception 
{ 
    MessageDigest md = MessageDigest.getInstance("MD5"); 
    FileInputStream fis = new FileInputStream("c:\\loging.log"); 

    byte[] dataBytes = new byte[1024]; 

    int nread = 0; 
    while ((nread = fis.read(dataBytes)) != -1) { 
     md.update(dataBytes, 0, nread); 
    }; 
    byte[] mdbytes = md.digest(); 

    //convert the byte to hex format method 1 
    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < mdbytes.length; i++) { 
     sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1)); 
    } 

    System.out.println("Digest(in hex format):: " + sb.toString()); 

    //convert the byte to hex format method 2 
    StringBuffer hexString = new StringBuffer(); 
    for (int i=0;i<mdbytes.length;i++) { 
     String hex=Integer.toHexString(0xff & mdbytes[i]); 
     if(hex.length()==1) hexString.append('0'); 
     hexString.append(hex); 
    } 
    System.out.println("Digest(in hex format):: " + hexString.toString()); 
} 

输出:

Digest(in hex format):: e72c504dc16c8fcd2fe8c74bb492affa 
Digest(in hex format):: e72c504dc16c8fcd2fe8c74bb492affa 

你必须做的是比较新的一个旧的MD5值,如果它对应,没有修改过的文件进行

+0

但如果对文件进行了一些更改,那么如何识别该用户修改了相同的文件? becoz我在同一个文件上运行MD5我会得到不同的HEX代码 – Shubhankar

+0

我不明白...如果我有MD5值文件a1a1a1a1和用户更改文件,然后MD5值也会改变,例如a2a2a2a2。由于MD5旧值(a1a1a1a1)与MD5新值(a2a2a2a2)不同,我知道有人做了一些更改 – IlGala

+0

完全正确。但是,如果我将其他文件传递给MD5哈希而不是我作出更改的文件,那么如何确定我传递的文件不是我在其中进行更改的文件? – Shubhankar

相关问题