File containing its own checksum

后端 未结 12 1734
误落风尘
误落风尘 2020-12-23 13:16

Is it possible to create a file that will contain its own checksum (MD5, SHA1, whatever)? And to upset jokers I mean checksum in plain, not function calculating it.

12条回答
  •  一个人的身影
    2020-12-23 14:21

    "I wish my crc32 was 802892ef..."

    Well, I thought this was interesting so today I coded a little java program to find collisions. Thought I'd leave it here in case someone finds it useful:

    import java.util.zip.CRC32;
    
    public class Crc32_recurse2 {
    
        public static void main(String[] args) throws InterruptedException {
    
            long endval = Long.parseLong("ffffffff", 16);
    
            long startval = 0L;
    //      startval = Long.parseLong("802892ef",16); //uncomment to save yourself some time
    
            float percent = 0;
            long time = System.currentTimeMillis();
            long updates = 10000000L; // how often to print some status info
    
            for (long i=startval;i

    The output:

    49.825756% through - done 2140M so far - 1731000 tested per second - 1244s till the last value.
    50.05859% through - done 2150M so far - 1770000 tested per second - 1211s till the last value.
    Match found!!! Message is:
    I wish my crc32 was 802892ef...
    crc32 of message is 802892ef
    

    Note the dots at the end of the message are actually part of the message.

    On my i5-2500 it was going to take ~40 minutes to search the whole crc32 space from 00000000 to ffffffff, doing about 1.8 million tests/second. It was maxing out one core.

    I'm fairly new with java so any constructive comments on my code would be appreciated.

    "My crc32 was c8cb204, and all I got was this lousy T-Shirt!"

提交回复
热议问题