相关疑难解决方法(0)

如何生成MD5哈希?

是否有任何方法可以在Java中生成字符串的MD5哈希?

java hash md5 hashcode

977
推荐指数
27
解决办法
99万
查看次数

Java大文件磁盘IO性能

我的硬盘上有两个(每个2GB)文件,想要将它们相互比较:

  • 使用Windows资源管理器复制原始文件大约需要.2-4分钟(即读写 - 在同一物理和逻辑磁盘上).
  • java.io.FileInputStream两次读取并在每个字节的字节上比较字节数组需要20多分钟.
  • java.io.BufferedInputStream 缓冲区为64kb,文件以块的形式读取然后进行比较.
  • 比较完成是一个紧凑的循环

    int numRead = Math.min(numRead[0], numRead[1]);
    for (int k = 0; k < numRead; k++)
    {
       if (buffer[1][k] != buffer[0][k])
       {
          return buffer[0][k] - buffer[1][k];
       }
    }
    
    Run Code Online (Sandbox Code Playgroud)

我该怎么做才能加快速度呢?NIO应该比普通的流更快吗?Java无法使用DMA/SATA技术,而是做一些缓慢的OS-API调用吗?

编辑:
谢谢你的答案.我做了一些基于它们的实验.安德烈亚斯表示

流或nio方法没有太大差别.
更重要的是正确的缓冲区大小.

我的实验证实了这一点.由于文件是以大块读取的,因此即使是额外的缓冲区(BufferedInputStream)也不会提供任何内容.优化比较是可能的,并且我通过32次展开获得了最佳结果,但与磁盘读取相比,花费的时间比较小,因此加速很小.看起来我无能为力;-(

java comparison performance nio stream

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

检查Android资产完整性

在我的文件夹中assets/data,有很多XML文件包含我的应用程序的静态数据.

有人可以很容易地检索APK,修改它的一部分并安装在设备上.

我想通过检查我的assets/data文件夹的完整性来阻止用户更改我的静态数据.

最初我考虑使用MD5校验和,但对于我将拥有的文件数量(50-100)可能太慢了.

你有什么建议吗?

编辑:

这个应用程序是一个带有描述每个级别的XML文件的游戏.

java android integrity

14
推荐指数
1
解决办法
2301
查看次数

Android:如何知道位于Web服务器中的文件是否被修改?

我正在解析位于Web服务器中的Xml文件并将解析后的数据存储到数据库中.对于我的应用程序我使用数据库中的数据.我只需要在修改文件时解析xml文件,否则无需解析.那我怎么知道文件被修改了?我知道我可以使用"if-modified-since"标题.但我需要一些"if-modified-since"标题的例子
请帮帮我.......

android web-applications file

8
推荐指数
1
解决办法
7057
查看次数

如何用Java计算文件的哈希值?

我编写了以下程序来计算Java中字符串的SHA-256哈希值:

public class ToHash {

    public static void main(String[] args)  {

        byte[] data = "test".getBytes("UTF8");
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hash = digest.digest(data);
        System.out.println(new BASE64Encoder().encode(hash));

    }
}
Run Code Online (Sandbox Code Playgroud)

嗯,这很好.在下一步中,我想以接受文件并计算其哈希值的方式开发它.我的解决方案是在字符串数组中读取整个文件,并在该字符串数组上调用该digest()方法.但是有两个问题:

  1. 我不知道如何将整个文件读入数组?目前我认为我必须逐行阅读并附加一个带有新行的数组!

  2. 以上方法需要大量文件的大量内存!


这是我当前读取文件的程序:

public class ToHash {

    public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, FileNotFoundException, IOException {
        // TODO code application logic here

        // The name of the file to open.
        String fileName = "C:\\Users\\ghasemi\\Desktop\\1.png";
        BufferedReader br = null;

        try {

            String sCurrentLine;
            br = new BufferedReader(new FileReader(fileName));
            while …
Run Code Online (Sandbox Code Playgroud)

java arrays hash file-io

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

commons-net ftp正在上传损坏的文件

我正在尝试使用apache commons-net进行ftp文件传输.

问题是文件间歇性地到达服务器损坏.'腐败'我的意思是winrar告诉我一个zip文件有一个'意外的归档结束'.有时文件是完全空的.我注意到,对于较大的文件(100kb +),这种情况更多,但对于小文件也会发生(20kb).

我知道上传的源zip文件是有效的,只有243kb.

我没有从代码中得到任何错误/异常.

这是正在执行的代码:

    try
    {
        int CON_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(20); // fail if can't connect within 20 seconds
        int LIVE_TIMEOUT = (int) TimeUnit.MINUTES.toMillis(5); // allow up to 5 minutes for data transfers

        FTPClient client = new FTPClient();
        client.setConnectTimeout(CON_TIMEOUT);
        client.setDataTimeout(LIVE_TIMEOUT);
        client.connect(host);
        client.setSoTimeout(LIVE_TIMEOUT);
        client.login(user, pass);
        client.changeWorkingDirectory(dir);
        log("client ready");

        File file = new File(filePath);
        String name = new Date().getTime() + "-" + file.getName();

        InputStream fis = null;
        try
        {
            fis = new FileInputStream(file);
            if (!client.storeFile(name, fis))
                throw new RuntimeException("store …
Run Code Online (Sandbox Code Playgroud)

java ftp apache-commons-net

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

检查连接到服务器的Android应用是否是您所做的

当它连接到我的服务器时,是否可以检查我的用libGdx制作的应用程序是否是我制作的应用程序?我需要知道这一点,因为我希望能够检查人们是否更改/破解了我的应用.

或者,一旦它在appstore/Google Play商店上,人们就无法更改我的应用程序?

java android libgdx google-play

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

如何在java中生成任何文件的哈希?

如何在java中生成任何类型文件(.doc, .docx,*.pdf等等)的哈希值?

java hash

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

用于比较文件的Java和Hash算法

我必须指纹文件以匹配双线.在2013年推荐使用Java?我还应该比较文件大小,还是不必要的检查?

假阳性的概率应该非常接近0

编辑:很多答案,谢谢.今天的备份软件标准是什么?SHA-256?更高?我猜md5不合适?

java hash md5 sha

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

有人能解释从字节数组到十六进制字符串的转换吗?

我最近开始研究MD5哈希(用Java),虽然我找到了帮助我实现这一目标的算法和方法,但我还是想知道它是如何工作的.

首先,我从以下网址找到以下内容:

private static String convertToHex(byte[] data) {
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < data.length; i++) {
        int halfbyte = (data[i] >>> 4) & 0x0F;
        int two_halfs = 0;
        do {
            if ((0 <= halfbyte) && (halfbyte <= 9))
                buf.append((char) ('0' + halfbyte));
            else
                buf.append((char) ('a' + (halfbyte - 10)));
                halfbyte = data[i] & 0x0F;
            } while(two_halfs++ < 1);
        }
    return buf.toString();
}
Run Code Online (Sandbox Code Playgroud)

我没有发现任何需要在Java中使用位移,所以我有点生疏.有人足以说明(简单来说)上述代码究竟是如何进行转换的?">>>"?

我还在StackOverflow上找到了其他解决方案,例如这里这里,它使用了BigInteger:

try {
   String …
Run Code Online (Sandbox Code Playgroud)

java hex md5 bytearray

4
推荐指数
1
解决办法
4332
查看次数