Encryption basics
In this section, we will examine how Java supports symmetric and asymmetric encryption. As we will see, there are various encryption algorithms that are available for both of these techniques.
Symmetric encryption techniques
Symmetric encryption uses a single key to encrypt and decrypt a message. This type of encryption is classified as either stream ciphers or block ciphers. More details about these algorithms can be found at https://en.wikipedia.org/wiki/Symmetric-key_algorithm. A provider provides an implementation of an encryption algorithm, and we often choose between them.
Symmetric algorithms that are supported by Java include the following ones where the key size in bits is enclosed in parentheses:
AES (128)
DES (56)
DESede (168)
HmacSHA1
HmacSHA256
Varying lengths of data may be encrypted. Block cipher algorithms are used to handle large blocks of data. There are several block cipher modes of operations, as listed next. We will not detail how these modes work here, but...