I have been working on finishing the imlpementation of my first one-way hash algorithm, named Wolf1. Over the weekend, I devised a second algorithm, aptly named Wolf2, which will be debuting on my website at the same time Wolf1 appears. The general form for Wolf1 is as follows:

`Wolf1 is a 256-bit one-way hash algorithm, which operates on 8 32-bit chunks, and uses the following special constants C0..3:`

` C0 - 0x5538a3e5 0xf1ef632f 0x7df8a258 0xcef9c7ba 0x765f5cda 0x497fecf2 0xfa989ea3 0xd594974e`

` C1 - 0xc1eac8f1 0xc9858068 0xc9858d68 0xf489d67b 0x16a22887 0x998aa773 0x342df4ad 0x9169f4b5`

` C2 - 0xc3566e73 0xb8b539b1 0xf19dbaa9 0xb7252916 0x8b3156be 0x6b3163b7 0x59318bb2 0xa4e99a7a`

` C3 - 0xc477357d 0x7a69bc6c 0x6bca3744 0xb2a0d222 0xc9a8a8b3 0x613b5ad5 0x68588990 0xbc486357`

` an additional special constant R is defined as follows:`

` R = (C0 ^ C1) + (C2 ^ C3)`

` The following functions are defined:`

` F1 (B,K,C0) -> B = (B ^ K) + C0`

` F2 (K,B,C1) -> K = (K + B) ^ C1`

` F3 (C0,C2,K) -> C0 = (C0 ^ C2) + K`

` F4 (C1,C3,B) -> C1 = C1 ^ (B + C3)`

` F5 (C2,B,K) -> C2 = (B - C2) + K`

` F6 (C3,B,R) -> C3 = (C3 + B) - R`

` F7 (R,C0,C1,C2,C3) -> R = (C0 ^ C1) + (C2 ^ C3)`

` After the functions F1..7 are performed on the current block B, the following rotations are applied per 32-bit chunk:`

` if right-most bit is 1, rotate left by 1,3,5,7 bits, the value of the right-most 3 bits`

` else rotate right by 0,2,4,6 bits, the value of the right-most 3 bits`

` Other special values:`

` A - ASCII sum of file contents, a 32-bit value`

` S - size in bits of file, a 32-bit value`

` Special rules:`

` the last block is the last chunk of the file padded to exactly 192 bits with repeating pattern of 10..`

` the last 64 bits of the last block is A & S appended to the 192-bit chunk to make 256-bit block`

` Hash signature is the final value of K`

That’s quite a mouthful, but it describes the full algorithm. Wolf2’s specification will be published in a few days.

I am specifically looking for people to analyze the algorithm, and tell me of any problems with it. Being just an amateur, I can’t really predict the cryptographic strength of any algorithm I propose, though I can do some statistical tests. I don’t understand linear or differential cryptanalytic techniques, though I would like to learn how they work. If anyone can give a response as to the security/one-wayness of the algorithm, and collision resistance, resistance to breaking, I would greatly appreciate it.

“God may not play dice with the universe, but something strange is going on with the prime numbers.” –Paul ErdÅ‘s

Pingback: Veritas Aequitas » Blog Archive » Wolf1 reference implementation

Pingback: Veritas Aequitas » Blog Archive » Wolf2 reprogressing