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