That is the most beautiful GUI i have ever seen :)
Just my two-cents is that this is a good starting point, but needs major improvements (if not rewritten).
You should be processing things in a fixed ammount. Lets say in 64 bytes at a time. From there create 4
16 byte arrays from that 64 chunk and do some mixing (aka. diffusion). Place that into a for() and do 4 rotations. Every time make sure its not hashing the same thing.
example:
if we have A,B,C,D. We will loop 4 times so every part depends on the rest of the blocks. A = B, B = C, C = D, D = A. or something like that. The point being is that you wanna be dependent on EVERY byte. using << and >> are handy but used incorrectly will overflow things. do, String -> Byte[] -> convert to Int[] to use << or >>.
XoR comes in handy. Not sure how to do it in vb.net. C# its ^. Read up on XoR first because its good to know how it works.
The output of the hash function will be 512 bits (512 / 8)=64 bytes long.
Having a Avalanche Effect that is effective is hard to do. Your best bet is to look at a function like MD5. Use Bouncy Castle Library for source if need be.
Create a function that creates a key for the current block (i would use RC5 since its nice and patent free. just modify it a bit).
Best thing you can honestly do is study current hashing algorithm (skein/tiger/RIPEMD/Whirlpool/etc). Its the best way to see how they do it.
Just a piece of adive. Buffer.BlockCopy() is your best friend ;)
...
Shawn W.
Just my two-cents is that this is a good starting point, but needs major improvements (if not rewritten).
You should be processing things in a fixed ammount. Lets say in 64 bytes at a time. From there create 4
16 byte arrays from that 64 chunk and do some mixing (aka. diffusion). Place that into a for() and do 4 rotations. Every time make sure its not hashing the same thing.
example:
if we have A,B,C,D. We will loop 4 times so every part depends on the rest of the blocks. A = B, B = C, C = D, D = A. or something like that. The point being is that you wanna be dependent on EVERY byte. using << and >> are handy but used incorrectly will overflow things. do, String -> Byte[] -> convert to Int[] to use << or >>.
XoR comes in handy. Not sure how to do it in vb.net. C# its ^. Read up on XoR first because its good to know how it works.
The output of the hash function will be 512 bits (512 / 8)=64 bytes long.
Having a Avalanche Effect that is effective is hard to do. Your best bet is to look at a function like MD5. Use Bouncy Castle Library for source if need be.
Create a function that creates a key for the current block (i would use RC5 since its nice and patent free. just modify it a bit).
Best thing you can honestly do is study current hashing algorithm (skein/tiger/RIPEMD/Whirlpool/etc). Its the best way to see how they do it.
Just a piece of adive. Buffer.BlockCopy() is your best friend ;)
...
Shawn W.
We cannot solve our problems with the same thinking we used when we created them.
Albert Einstein
Albert Einstein



![[Image: 4mYH8IR.png]](https://i.imgur.com/4mYH8IR.png)