6 ms·
I wanted to understand how SHA-256 works, so I made a terminal animation that shows the bitwise operations at each step. I wrote a text guide in the README.md t
by inersha 6y ago
I wanted to understand how SHA-256 works, so I made a terminal animation that shows the bitwise operations at each step. I wrote a text guide in the README.md to explain what's going on. I think my technical terminology is okay.
I'm new to hash functions though, so I don't yet know why SHA-256 has been designed in the way it has (e.g. why exact numbers were chosen in the bitwise rotations).
As far as I understand, the Sigma functions promote diffusion of bits to help prevent collisions, and Choice/Majority/Addition help to make it a one-way function, but I'm not entirely sure. I'd be interested in learning more about the design if anyone has experience in this field.
- baicunko 6y agoThis is a great idea of showing something that is at first very complex. Could be used in Discreet Mathematics to teach students!
- m4r35n357 6y agoIndiscreet mathematics?
- perl4ever 6y agoSomewhere I had the idea concrete math was a combination of continuous and discrete, but I seem to be mistaken. "When DEK taught Concrete Mathematics at Stanford for the first time, he explained the somewhat strange title by saying that it was his attempt to teach a math course that was hard instead of soft. He announced that, contrary to the expectations of some of his colleagues, he was not going to teach the Theory of Aggregates, nor Stone's Embedding Theorem, nor even the Stone-Cech compactification. (Several students from the civil engineering department got up and quietly left the room.)"
- ImJasonH 6y agoThis is super impressive, thanks for building and sharing it!
- w0utert 6y agoLike it a lot. Not sure how useful it is but just looking at it is mesmerizing, well done!
- lewiscollard 6y agoNice work, and that is a very cool approach to learning new things!
- mabbo 6y ago> I wanted to understand how SHA-256 works, so I... ... taught everyone else how SHA-256 worked... This is an awesome intro. And now I also want to know more about the things you mentioned wanted to learn more about.
- tialaramex 6y agoWithout any doubt I do not properly understand anything I can't explain to someone else. An exercise I go through constantly is figuring out how to explain a thing I think I know to a curious person with no relevant training. Often in the process I discover I need to go do more research or actually test things because I did not understand them as well as I'd maybe thought. Mostly this is just an exercise. But every so often I actually get to use this in anger. A non-technical friend who works in a Computer Science department asked me on Facebook to explain a joke she'd seen which involved localhost addressing, and I was very pleased to be able to provide a concise explanation using analogies that I know hold up to scrutiny. Obviously a joke isn't very funny if you need it explained, and I can't fix that, but I can avoid the discomfort of her not understanding a joke other people are laughing at in her place of work.
- bradjohnson 6y agoI realize it's not what you're saying, but I don't like the idea that if you can't teach something to others, you don't understand it yourself. Teaching is a skill and it's something that I am aware that I struggle with. I can explain something in great detail to a captive audience and understand it myself personally, but teaching is about getting others to engage with the ideas you're presenting and identifying and elaborating on parts that they don't understand. Given the content of knowledge sharing sessions that I sit through and the convoluted nature of some of them, I wish that people recognized that presenting information is not all that is required to teach. You can understand something perfectly, but teach it horribly.
- stevofolife 6y agoIf you can't teach it, then you don't understand something perfectly. Perfect is a word par excellence. Teaching is indeed a skill but don't confuse it with presenting. A wise guy once said, "if you can’t explain something in simple terms, you don’t understand it". I'm sure OP stands by it and that itself is very admirable.
- Zhyl 6y ago1) I loved this video. 2) I did have to take a sip of tea and think about my life when I realised I was watching a video by a Welshman about mining. 3) Although having said this, 'Welsh Bitcoin Miner' is going to fit seamlessly into my West Country themed cyberpunk adventure 'Cider Punk'.
- inersha 6y ago1) Thank you. 2) It's certainly a combination I never anticipated. 3) I look forward to the book.
- mystickphoenix 6y agoYou could call it CIDR Punk if you want to be a bit more on-the-nose ;)
- hinkley 6y agoI feel like this is some sort of James Watt reference but I can't be sure.
- stan_rogers 6y agoThere's nothing particularly special about the constants. They needed a set of n constants to work with and the "cube root of first n primes, truncated" scheme is a "nothing up my sleeve"[0] construction. If they'd used magic numbers with no obvious generation scheme, you'd be left wondering if that was done as a way to put a back door in place. [0] https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number
- jmiserez 6y agoThat's also the explanation the author gives in chapter 4. I'm more interested in how they came up with the parameters for the sigma functions. I'm sure it's described somewhere.
- imoverclocked 6y agoCongratulations on the worlds slowest and useful SHA-256 implementation! :)
- nayuki 6y agoThere is a far slower implementation: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and...
- jonathanzufi 6y agoThis is fantastic - and your YouTube video is also impressive. Thank you for doing this.
- inersha 6y agoNo problem at all, thank you.