3
$\begingroup$

I am PhD student of Mathematics already done with my thesis. My research field is not related with cryptography but I have been keeping good interest in number theory and algebra which I assume to be a necessary background one might have to study cryptography.

Recently I had applied for a job in a security company. They needed a mathematician and my interview went well in that regard but they needed someone with programing skills which I dont have.

Question:

How can I learn cryptography with programing in minimum possible time to at least start working in this company.

$\endgroup$
4
  • 4
    $\begingroup$ It's also important to take into account that security is not the same as cryptography. You should have a clear understanding about the type of programming they expect you to do... Is it penetration testing for example? These type of things go beyond cryptography and may require you to acquire some skills in several topics like reverse engineering or networking systems. $\endgroup$
    – Daniel
    Nov 22, 2021 at 5:48
  • 2
    $\begingroup$ While it's never too late to become a skilled programmer, it would be surprising to become one quickly when starting at the age one has written a thesis. Thus as far a adapting quickly to a job, I would exclude this path. However, perhaps the company has skilled programmer(s) that don't understand much about math, cryptography, and security (on-the-field learning style favors that), and the company wants someone that do, in order to guide their programmer(s). It's more reasonable to become that piece of the collective puzzle if you have good judgment. $\endgroup$
    – fgrieu Mod
    Nov 22, 2021 at 6:54
  • $\begingroup$ @Daniel I just need to know cryptography and cryptanalysis and of course the programming behind that they require. In interview I was only required to know the mathematics and programming behind cryptography and cryptanalysis. Although I have some grond of cryptography and mathe matics I am still a beginner in programming $\endgroup$ Nov 22, 2021 at 10:19
  • 1
    $\begingroup$ If already in the interview they evaluate a PhD of Math by his programming skills: Runnnnnnnnnnnnnnnnn! $\endgroup$ Feb 3, 2022 at 18:27

1 Answer 1

5
$\begingroup$

The only real combined "cryptography + programming" curriculum I know are the cryptopals challenges. These may be useful, but I don't know how particularly useful they are for learning programming from 0 background. They're not really particularly useful for learning programming at any step actually (except that they require programming, and the more you program generically the better you'll get at it).

In general, I would suggest taking some intro to programming course (or perhaps finding someone's syllabus and doing all of the exercises). As a mathematician you might find the theoretical side of things somewhat easier to understand than most (so might find reading books on algorithms to be useful for your programming), but that probably isn't needed at first, so you might as well ignore it.

If you want a textbook to supplement cryptopals (you probably should), Introduction to Modern Cryptography by Katz and Lindell is a relatively popular (advanced undergraduate) level book.

You'll have to pick a programming language to do your learning in. I don't know what particular role you, want to work with, but cryptography/security work tends to be fairly low-level. C is a pretty safe bet, but can be somewhat more difficult for beginners than something like python. That being said, if you want a minimal amount of time spent learning, directly learning C probably makes the most sense.

$\endgroup$
2
  • $\begingroup$ I was a little introduced to Python but never learned C++ before. Thanks for your answer. I am required to know mathematics and programming behind cryptography and cryptanalysis. $\endgroup$ Nov 22, 2021 at 10:22
  • $\begingroup$ @Mathslovershah it is worth mentioning that C++ is an extension of C, but they are not the same. Learning C++ would likely be fine as well though, although it depends somewhat on what you want to do (for example, if you are working with advanced primitives like FHE, C++ is much more common. For basic stuff, say PKE/KEMs or whatever, things are often written in C directly). $\endgroup$
    – Mark
    Nov 22, 2021 at 19:58

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .