A library to easily use asymmetric cryptography in Java
<dependency>
<groupId>com.tenut</groupId>
<artifactId>asymmetrickeytool</artifactId>
<version>0.2.6</version>
</dependency>
import com.tenut.asymmetrickeytool.AsymmetricKeyGenerator;
class Example {
void doIt() {
String plainMessage = "This is a secret message...";
// Create new keys
AsymmetricKeyPair keyPair = AsymmetricKeyGenerator.newKeyPair(AsymmetricKeyAlgorithm.ASYMMETRIC_KEY_ALGORITHM_RSA);
// Encode a message
String encryptedMessage = keyPair.encrypt(plainMessage);
// Decode a message
String decryptedMessage = keyPair.decrypt(encryptedMessage);
// Sign a message
String signature = keyPair.sign(plainMessage);
// Verify a message
boolean verified = keyPair.verify(plainMessage, signature);
// Export private and public key
String privateKey = keyPair.getPrivateKey().toBase64();
String publicKey = keyPair.getPublicKey().toBase64();
// Load an existing key pair
AsymmetricKeyPair loadedKeyPair = AsymmetricKeyGenerator.loadKeyPair(AsymmetricKeyAlgorithm.ASYMMETRIC_KEY_ALGORITHM_RSA, publicKey, privateKey);
}
}
Asymmetric cryptography is a branch of cryptography where a secret key can be divided into two parts, a public key and a private key. The public key can be given to anyone, trusted or not, while the private key must be kept secret (just like the key in symmetric cryptography).
Asymmetric cryptography has two primary use cases: authentication and confidentiality. Using asymmetric cryptography, messages can be signed with a private key, and then anyone with the public key is able to verify that the message was created by someone possessing the corresponding private key. This can be combined with a proof of identity system to know what entity (person or group) actually owns that private key, providing authentication.
Encryption with asymmetric cryptography works in a slightly different way from symmetric encryption. Someone with the public key is able to encrypt a message, providing confidentiality, and then only the person in possession of the private key is able to decrypt it.
- Cryptography 101 for Java Developers by Michel Schudel - Devoxx
- Key Exchange Problems - Computerphile
- Breaking RSA - Computerphile
Copyright © 2023 10 Under Tiber Studio
Distributed under the Apache License 2.0.