How to Generate Bitcoin Addresses in Java

Learn the technical aspects of bitcoin address generation.

“You can’t be happy unless you’re unhappy sometimes.” ― Lauren Oliver, Delirium

1. Introduction

Let us learn how Bitcoin works by implementing various aspects of the technology, shall we? The technology includes the following aspects.

Continue reading “How to Generate Bitcoin Addresses in Java”

Python Crypto Basics for Building a Blockchain

Basics of building a blockchain using python, part 1

“Even if you are on the right track, you’ll get run over if you just sit there.” ― Will Rogers

1. Introduction

A Blockchain is all the craze right now. With the Bitcoin price on a runaway track, everyone wants in on the bitcoin bandwagon. While buying and selling bitcoin and other cryptocurrencies is good (or bad, depending on your finances!), let us learn the basics of the technology behind these cryptocurrencies. In the process we will also attempt to come up with the building blocks of the technology starting from scratch.

Continue reading “Python Crypto Basics for Building a Blockchain”

Using AES for Encryption and Decryption in Python Pycrypto

Easily incorporate strong AES encryption into your programs.

“Believe in your infinite potential. Your only limitations are those you set upon yourself.” ― Roy T. Bennett, The Light in the Heart

1. Introduction

Pycrypto is a python module that provides cryptographic services. Pycrypto is somewhat similar to JCE (Java Cryptography Extension) for Java. In our experience JCE is more extensive and complete, and the documentation for JCE is also more complete. That being said, pycrypto is a pretty good module covering many aspects of cryptography.

Continue reading “Using AES for Encryption and Decryption in Python Pycrypto”

Using HMac Sha256 for Message Authentication (MAC) in Java

Secure message authentication using a MAC generated from a secret key with a password.

“There is some good in this world, and it’s worth fighting for.” ― J.R.R. Tolkien, The Two Towers

1. Introduction

A Message Authentication Code or a MAC provides a way to guarantee that a message (a byte array) has not been modified in transit. It is similar to a message digest to calculate a hash, but uses a secret key so that only a person with the secret key can verify the authenticity of the message.

Continue reading “Using HMac Sha256 for Message Authentication (MAC) in Java”

AES Encryption and Decryption Using a Password in Java

Encrypt a file using a password with strong AES security.

“My tastes are simple: I am easily satisfied with the best.”
― Winston S. Churchill

1. Introduction

In a previous article, we have explained how to use AES for encryption and decryption. After encryption, the AES key will need to be communicated to the receiver via a secure channel for decrypting the file.

Continue reading “AES Encryption and Decryption Using a Password in Java”

Encrypt and Sign a File Using RSA in Java

Securely exchange a file with another person using RSA for encryption and digital signature to ensure authentication.

“To acquire knowledge, one must study;
but to acquire wisdom, one must observe.”
― Marilyn Vos Savant

1. Introduction

We have previously covered using RSA for file encryption in java. We have also covered in a separate article the process of generating a digital signature for a file and verification using RSA. Let us now combine the two and develop a procedure for encrypting a file and generating a digital signature for exchange between two parties.

Continue reading “Encrypt and Sign a File Using RSA in Java”

Using AES With RSA for File Encryption and Decryption in Java

AES can be used for encrypting the file and RSA for encrypting the AES key.

“The secret of education lies in respecting the pupil.”
― Ralph Waldo Emerson

1. Introduction

In the previous part of this article, we covered the use of RSA for file encryption and decryption in java. Using RSA directly for file encryption will not work since it can only be used with small buffer sizes. In our particular case, with an RSA key size of 2048 bits, we ran into a limitation of a maximum of 245 bytes for the data size.

Continue reading “Using AES With RSA for File Encryption and Decryption in Java”

File Encryption and Decryption using RSA in Java

Use RSA for File Encryption and Decryption in Java

“If you can’t do anything about it, laugh like hell.”
― David Cook

1. Introduction

RSA (Rivest–Shamir–Adleman) is an asymmetric encryption algorithm widely used in public-key cryptography today. The word asymmetric denotes the use of a pair of keys for encryption – a public key and a private key. When data is encrypted by one key, it can only be decrypted using the other key. The public key is publicized and the private key is kept secret.

Continue reading “File Encryption and Decryption using RSA in Java”

How to Use AES for Encryption and Decryption in Java

Learn how to use AES for encryption and decryption in Java

“There’s as many atoms in a single molecule of your DNA as there are stars in the typical galaxy. We are, each of us, a little universe.” ― Neil deGrasse Tyson, Cosmos

1. Introduction

The Advanced Encryption Standard (AES) is a standard for encryption and decryption that has been approved by the U.S. NIST (National Institute of Standards and Technology) in 2001. It is more secure than the previous encryption standard DES (Data Encryption Standard) and 3DES (Triple-DES). You should be using AES for all symmetric encryption needs in preference to DES and 3DES (which are now deprecated).

Continue reading “How to Use AES for Encryption and Decryption in Java”

Java Math.random Examples

Math.Random

1. Introduction

Let us learn how to generate some random numbers in Java. Random numbers are needed for various purposes; maybe you want to generate a password or a session identifier. Whatever the purpose may be, there are a number of issues to be aware of when generating a random number.

Continue reading “Java Math.random Examples”