Checksum Puzzle

YouN00b / Articles

Mini Ex Cross Multiplication and Ratios
Submitted On: Wednesday, July 7, 2010 at 11:59:16 PM
User Avatar
ColinFiat
Online Now

Please login to rate this submission.


Link to this Submission
Blog and Forum Link

HTML link
Facebook / Pagereaders

DO NOT ATTEMPT: Articles provided here are for INFORMATIONAL PURPOSES ONLY. DO NOT undertake any project based upon any information obtained on the internet, including this website. We are not responsible for, nor do we assume any liability for, damages resulting from the use of any information on this site. Please read the Legal page for more information.
Checksums are a total of the numbers in a set or collection. Usually the
numbers have a fixed size because they are computer based and are used
to make sure data has been copied or transmitted correctly.

When downloading a file from the internet, each number in the data file
is added up and a total derived. The next number to be downloaded
should match the total of the last block of data. If they do not match
then the downloaded data is faulty.

Another name for a checksum is a hash value. There are many types.
Perhaps some of you have seen a Cyclic Redundancy Check error message
from a hard drive? This type of checksum is more complex but performs
the same basic task; validating data.

When transmitting data, it is obviously efficient to use all of the
bandwidth. If the data being transmitted is 16 bits at a time, the
numbers can range from 0 to 65535. Therefore, the checksum must also
fit into 16 bits. But the added total of the data will most likely be
bigger than 65535. So the modulo of the value is used.

The modulus of a number can be thought of as the remainder of a
division – rem...

 Member Only Area
Information Please Login or Join to read the rest of this submission.
Tags: checksum, hashcode, hash, value, data, validation
  Monday, July 12th, 2010 at 7:59:49 PM #46657
Dodge
Dodge
Site Admin
'Open foot, insert mouth'
Level 19
Posts: 1,914
Submissions: 51
Dodge is Offline

Colin, I like to think I have a decently logical mind but math is not my strong point. I basically slept through high school. But I love puzzles. :-D

I apologise for using incorrect formatting, but I think I can get the idea across...

This seems impossible. It only works if the data ends in zeros.

However, if you were to change the first n10 to -n10, it can work for any number set.

n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9 + -n10 = n10 mod 100

Eg 1:
41 + 48 + 15 + 26 + 47 + 34 + 3 + 35 + 27 + 20 = 296 + -X = X mod 100


X= 48

Eg 2:
54 + 42 + 64 + 1 + 73 + 44 + 19 + 11 + 94 + 22 = 424 + -X = X mod 100


X= 12

I figure it something like this-

Eg 3:
41 + 48 + 15 + 26 + 47 + 34 + 3 + 35 + 27 + 20 = 296
296 mod 100 = 96
96 / 2 = 48
96 - 48 = 48

If this is way off, plz disregard my babbling. :-P

5*'d, btw.

Oowwww.
( ̲̅:̲̅:̲̅:̲̅[̲̅ ̲̅]̲̅:̲̅:̲̅:̲̅ ̲̅)Member Added Image
Uses [view] tag.
  Monday, July 12th, 2010 at 8:15:37 PM #46658
Dodge
Dodge
Site Admin
'Open foot, insert mouth'
Level 19
Posts: 1,914
Submissions: 51
Dodge is Offline

I wish there were an edit button here...


In eg 1, X actually = 148

in eg 2, X actually = 212

Then you'd ditch the hundreds leaving 48 and 12 for the checks.

Oowwww.
( ̲̅:̲̅:̲̅:̲̅[̲̅ ̲̅]̲̅:̲̅:̲̅:̲̅ ̲̅)Member Added Image
Uses [view] tag.
  Monday, July 12th, 2010 at 8:34:12 PM #46660
ColinFiat
ColinFiat
Site Admin
'JavaScript'
Level 26
Posts: 1,301
Submissions: 85
ColinFiat is Offline

You are one smart cookie Dodge.

Yes the example challenge is impossible and a solution can only be found for specific number sets.

I chose to set a challenge which was unsolvable to highlight the near impossibility of including 16 or 32 bit checksums in the data.

There could have been more to this article as I had contemplated discussing the possibility of writing a program which contains a compressed data block of itself. In essence:

data="compresseddatacompresseddatacompresseddatacompresseddata"
code=unpack(data)
write(code)

The result would 'written' would look exactly like the above.

As yet I have not found a method of doing this.

Member Added Image
Member Added Image
  Monday, August 9th, 2010 at 9:00:21 PM #47937
Toasty
Toasty
SysOp
Level 40
Posts: 7,353
Submissions: 227
Toasty is Offline

^Trim, then do a frequency analysis, make a map, and then replace. Of course, it only makes sense to do so if the size of the map+data is smaller than the original data. You could drop the mapping concept, and simply replace key characters (for example, replace "qu" in English with one character). If the data can strictly consist of A-Z in one case, no punctuation, you could reduce the size of each character (4 bit even? I'm on prescriptions right now, thinking is out).

Reducing the total scope (i.e. taking the full 256 character ASCII set down to the 128 will help out some). Just a few ideas.

Member Added Image
  Saturday, October 9th, 2010 at 7:19:09 PM #49594
PhiLep
PhiLep
Member
Level 4
Posts: 101
Submissions: 14
PhiLep is Offline

Article #100.

Member Added Image