Algorithms and Data Structures, from novice to expert
This list is designed to teach you algorithms and data structures from the ground-up. It starts with why you need algorithms, and then proceeds to teach you foundational ones such as sorting algorithms, graph algorithms, data structures like heaps, dynamic progr...
Discrete Logarithms, The ElGamal Cryptosystem and Diffie-Hellman Key Exchange
ElGamal encryption is an example of public-key or asymmetric cryptography. The cryptosystem takes its name from its founder the Egyptian cryptographer Taher Elgamal who introduced the system in his 1985 paper entitled “A Public Key Cryptosystem and A Signature Scheme Based on Discrete Logarithms”.
As this title suggests the security of this cryptosystem is based on the notion of discrete logarithms. This is the ‘one way function’ at the heart of ElGamal’s encryption and decryption algorithms.
Diffie-Hellman key exchange algorithm is also based on the discrete logarithm, and allows two people to establish a shared secret key. This key establishes an initial handshake, and can serve as the key for any symmetric key algorithm for further communication.
The discrete logarithm problem, why it is secure and attacks upon it are discussed below.
Sequence alignment using Longest Common Subsequence algorithm
In molecular biology, DNAs and proteins can be represented as a sequence of alphabets. DNA sequences consist of A, T, G, C representing nucleobases adenine, thymine, guanine and cytosine. Proteins consist of 20 different letters indicating 20 different amino acids.
Comparison of two sequences, known as sequence comparison, either from the same organism or from different organism is an important task in molecular biology. It is helpful in providing solutions to many biological questions, for example
predicting structure and function of proteins
inferring evolutionary history and relatedness of species
locating common subsequences in genes / proteins to identify common motifs,
as a sub-problem in genome assembly for DNA sequencing