Java Crypt32
How to encrypt and decrypt using crypt32 in Java.
Crypt32 is a Windows CryptoAPI that provides encryption and decryption functionality.
To use crypt32.dll library in Java, developer will need to interact with native code.
Include JNA-Platform dependency (ex. Maven):
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.16.0</version>
</dependency>
JNA-Platform library provides convenient class Crypt32Util to protect and unprotect data.
To encrypt data, the method cryptProtectData is used:
byte[] data = "Sample data".getBytes(StandardCharsets.UTF_8);
byte[] encryptedData = Crypt32Util.cryptProtectData(data);
For decrypting data, the method cryptUnprotectData is used:
byte[] decryptedData = Crypt32Util.cryptUnprotectData(encryptedData);
Full Java code:
import com.sun.jna.platform.win32.Crypt32Util;
import java.nio.charset.StandardCharsets;
public class Crypt32EncryptDecrypt {
public static void main(String[] args) {
byte[] data = "Sample data".getBytes(StandardCharsets.UTF_8);
byte[] encryptedData = Crypt32Util.cryptProtectData(data);
byte[] decryptedData = Crypt32Util.cryptUnprotectData(encryptedData);
System.out.println(new String(decryptedData, StandardCharsets.UTF_8));
}
}
Output:
Sample data