Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于保持时间戳完整性的校验和_Java_Date_Checksum - Fatal编程技术网

Java 用于保持时间戳完整性的校验和

Java 用于保持时间戳完整性的校验和,java,date,checksum,Java,Date,Checksum,我有时间戳,基本上是“ddmmyyhhmms”。我想做的是每次运行程序时,秒值都会改变,但校验和保持不变。有人能帮我吗。我希望每次秒(时间)改变时校验和都会改变 实际上,您从未将您的输入传递到摘要.update(…)调用中。始终传递相同的空字节数组:block=newbyte[4096]因此它将始终返回相同的值思考一下当您从while循环中出来时,line的值是什么,这将告诉您为什么校验和总是相同的。我检查了值,它正确地反映了时间的变化,但校验和仍然是相同的。中断后“line”的值是什么?更准确

我有时间戳,基本上是“ddmmyyhhmms”。我想做的是每次运行程序时,秒值都会改变,但校验和保持不变。有人能帮我吗。我希望每次秒(时间)改变时校验和都会改变


实际上,您从未将您的
输入
传递到
摘要.update(…)
调用中。始终传递相同的空字节数组:
block=newbyte[4096]因此它将始终返回相同的值

思考一下当您从while循环中出来时,line的值是什么,这将告诉您为什么校验和总是相同的。我检查了值,它正确地反映了时间的变化,但校验和仍然是相同的。中断后“line”的值是什么?更准确地说:在br.close()之间;第一次运行:在文件上写入之前:23042018180825从文件中读取时:23042018180825 MD5:36DF9540A5EF4996A9737657E4A8929C SHA1:4595C5B7AC9F265CDF89AC0069630697680F96 SHA256:E7ECEBC590BC88B3761FA6CD03D749F87463DABB67021A568C25EC68B3F2 SHA5512:7CF95CDE6D8D85F13497DDBABC60A56BCA0ABED2BC3E723C0A4A8C0784B14C4EE3317620B79D260D42608C8B907571499187078D14304A5E7A84BC55193CE9第二次运行:在文件上写入之前:23042018180920从文件读取时:23042018180920 MD5:36DF9540A5EF4996A9737657E4A8929C SHA1:4595C5B7AC9F265CD9AF0896969768096F256:E7ECEBBC590BC88B3761FA6CD03D749F87463DABB67021A5C6768C25EC68B3F2 SHA512:7CF95CDE6D8D85F13497DDBABC60A56BCA00ABDC3E723C0A4A8C0784B14C4EE3317620B79D260D4260C8B9075714987078D14304A5E7A84BC55193CE9
public class Checksum {
public static void main(String[] args) throws IOException {
    File f = new File("D:/test.txt");
    PrintWriter pw = new PrintWriter(f);
    if(!f.exists()){
        f.createNewFile();
    }
    Date d = new Date();
    SimpleDateFormat sd = new SimpleDateFormat("ddMMYYHHmmss");
    String formatteddate = sd.format(d);
    System.out.println(formatteddate);
    pw.println(formatteddate);
    pw.close();

    BufferedReader br = new BufferedReader(new FileReader(f));
    String line = null;

    while((line = br.readLine()) != null){
        break;
    }
    br.close();

    System.out.println("MD5    : " + toHex(Hash.MD5.checksum(line)));
    System.out.println("SHA1   : " + toHex(Hash.SHA1.checksum(line)));
    System.out.println("SHA256 : " + toHex(Hash.SHA256.checksum(line)));
    System.out.println("SHA512 : " + toHex(Hash.SHA512.checksum(line)));
}
 private static String toHex(byte[] bytes) {
        return DatatypeConverter.printHexBinary(bytes);
    }
}

class CheckSumGenerator {
public enum Hash {

    MD5("MD5"), SHA1("SHA1"), SHA256("SHA-256"), SHA512("SHA-512");

    private String name;

    Hash(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public byte[] checksum(String input) {
        try {
            MessageDigest digest = MessageDigest.getInstance(getName());
            byte[] block = new byte[4096];
            int length;
            if (input.length()> 0) {
                digest.update(block, 0, input.length());
            }
            return digest.digest();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

}