The weather is becoming colder here, so I could use a few flames. That's why
I take the risk to put this completely silly proposal in front of your
flame throwers.
Internet protocols are often said to be successful because they are simple.
I hope this is as simple as it can be. In order to avoid the use of
'complicated' algorithms, this proposal makes use of repeated checksums,
each one covering a (small) part of the byte stream.
- Two more 'safe' characters are reserved. Lets call them (1) end (2).
(Actual characters should be selected by more clever people).
- (1) can appear anywhere between quantums. It is followed by a checksum
quantum. A (1)-checksum-quantum group should appear at least once every
n encoded bytes. (Actual value of n to be selected by clever people).
A last (1)-checksum-quantum must appear at the end of the encoded
object.
- A check domain extends from the beginning of the encoded object to the
first (1)-checksum-quantum exclusive, or from one (1)-checksum-quantum
to the next one, exclusive of both. (Better terminology to be provided
by native english speakers).
- The checksum quantum, like any quantum, encodes tree bytes. The first byte
gives the number of end-of-records (commas) encountered in the check domain,
the two other bytes give the checksum of the bytes contained in the check
domain, computed using the well-known IP checksum algorithm.
- In order to detect premature truncation, the encoding of an object must
end by a single occurence of (2).
As has been said earlier, BASE-64 is a means to transfer binary stuff across
roads 'hostile' to such payloads. Checksums in BASE-64 are only a way to
have more confiance in the result. 'End to end', 'application', etc checksums
may of course also be defined and used...
/AF