So you want to roll your own crypto?
While I appreciate the links to actual learning material, and though it is said in the nicest possible way, I get the usual &quot;Crypto is hard, back off&quot; vibe, without a clear path to victory. Sure it&#x27;s hard, but it&#x27;s not magic either. There are relatively few rules, that when followed give you a working, <i>secure</i> system.  Those rules aren&#x27;t easy to follow, but they <i>are</i> simple to know about. <a href="http:&#x2F;&#x2F;loup-vaillant.fr&#x2F;articles&#x2F;crypto-is-not-magic" rel="nofollow">http:&#x2F;&#x2F;loup-vaillant.fr&#x2F;articles&#x2F;crypto-is-not-magic</a><p>About not using your crypto until it&#x27;s been vetted by professionals…  How do you get those vaunted professionals to even look at your work? For instance, I&#x27;ve been working on Monocypher for over 3 years, and the only way I could get professionals to actually look at it was to pay $7.000 (out of the OTF&#x27;s pocket, I don&#x27;t have the money).  That&#x27;s an unrealistic bar to meet, people need other ways to vet their work.<p>About CTF (Capture The Flag), and cryptopal challenges, my advice is: don&#x27;t waste your time. The penetration testing approach to secure systems <i>does not work</i>. You whack a mole, two more appear.  We need ways to prevent whole classes of errors, like proofs.  For instance, tools like <a href="https:&#x2F;&#x2F;verifpal.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;verifpal.com&#x2F;</a> can be a great help when designing a protocol.<p>On crypto being deep and vast, it really depends what you&#x27;re doing. While perhaps less than 50 people in the world are truly qualified to design a new cipher, that&#x27;s not what people need when they &quot;roll their own crypto&quot;. Most of the time they need a new <i>implementation</i> for an existing primitive (embedded programmers), or they need to invent a new <i>protocol</i>. Either is actually accessible to any professional programmer who actually follow the rules.<p>Even side effect circumvention.  programming without the &quot;if&quot; statement is not that hard, especially if you stick to constant-time friendly primitives.