**Cryptography Tutorials - Herong's Tutorial Examples** - v5.41, by Herong Yang

What Is a Digital Signature?

This section describes what is a digital signature and what is the process of generating and verifying digital signature from a message.

**What Is a Digital Signature?**
A digital signature is an electronic analogue of a written signature
to provide assurance that the claimed signatory signed the information.
In addition, a digital signature may be used to detect whether or
not the information was modified after it was signed (i.e., to detect the integrity of the signed data).

The digital signature process can be divided into 2 parts:

1. Signature Generation:

- Generating a pair of public key and provide key by the sender of the message.
- Generating the message digest from the message using a hash function.
- Generating the digital signature from the message digest with the private key.
- Sending the message, the digital signature, and the public key to receiver.

2. Signature Verification:

- Generating the message digest from the message using the same hash function.
- Verifying the digital signature with message digest using the public key.

Here is a diagram showing the digital signature process:

There are 2 popular algorithms that are used to generate and verify digital signature using public keys:

- RSA (Rivest, Shamir and Adleman) algorithm developed by Ronald L. Rivest, Adi Shamir, and Leonard M. Adleman in 1976.
- DSA (Digital Signature Algorithm) algorithm developed by US government in 1991.

Table of Contents

Introduction to AES (Advanced Encryption Standard)

DES Algorithm - Illustrated with Java Programs

DES Algorithm Java Implementation

DES Algorithm - Java Implementation in JDK JCE

DES Encryption Operation Modes

PHP Implementation of DES - mcrypt

Blowfish - 8-Byte Block Cipher

Secret Key Generation and Management

Cipher - Secret Key Encryption and Decryption

RSA Implementation using java.math.BigInteger Class

►Introduction of DSA (Digital Signature Algorithm)

What Is DSA (Digital Signature Algorithm)?

Illustration of DSA Algorithm: p,q=7,3

Illustration of DSA Algorithm: p,q=23,11

Illustration of DSA Algorithm with Different k and h

Proof of DSA Digital Signature Algorithm

Java Default Implementation of DSA

Private key and Public Key Pair Generation

PKCS#8/X.509 Private/Public Encoding Standards

Cipher - Public Key Encryption and Decryption

OpenSSL Introduction and Installation

OpenSSL Generating and Managing RSA Keys

OpenSSL Generating and Signing CSR

OpenSSL Validating Certificate Path

"keytool" and "keystore" from JDK

"OpenSSL" Signing CSR Generated by "keytool"

Migrating Keys from "keystore" to "OpenSSL" Key Files

Certificate X.509 Standard and DER/PEM Formats

Migrating Keys from "OpenSSL" Key Files to "keystore"