DINAMO Networks is now aDINAMO cyber security company!
Java API
HSM DINAMO
Loading...
Searching...
No entry found
EncDecGcmIvAutoGen.java

Example of encryption and decryption using GCM with automatic IR generation.

See Note on examples.
package doxy.examples;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import com.dinamonetworks.Dinamo;
import br.com.trueaccess.TacException;
import br.com.trueaccess.TacNDJavaLib;
public class EncDecGcmIvAutoGen {
static String hsmIp = "127.0.0.1";
static String hsmUser = "master";
static String hsmUserPassword = "12345678";
public static void main(String[] args) throws TacException {
Dinamo api = new Dinamo();
api.openSession(hsmIp, hsmUser, hsmUserPassword);
String plainText = "asdfasdfasdfasdfasdfas";
byte[] originalData = plainText.getBytes(StandardCharsets.UTF_8);
String keyId = "aes256";
api.createKey(keyId, TacNDJavaLib.ALG_AES_256);
// Configura o modo GCM e a geração automática do IV
// O IV será gerado automaticamente durante a encriptação
// e utilizado na decriptação.
byte[] encKey = api.getUserKey(keyId);
api.setMode(encKey, TacNDJavaLib.MODE_GCM);
api.setIvAutoGeneration(encKey, true);
byte[] enc = api.encrypt(encKey, originalData, 0);
// Prepara as configurações para decriptar e o IV gerado na encriptação
byte[] iv = api.getIv(encKey);
byte[] decKey = api.getUserKey(keyId);
api.setMode(decKey, TacNDJavaLib.MODE_GCM);
api.setIv(decKey, iv);
byte[] decrypted = api.decrypt(decKey, enc, 0);
if(!Arrays.equals(originalData, decrypted))
{
System.out.println("Dados decriptados não são iguais aos dados originais!");
return;
}
System.out.println("Dados decriptados com sucesso.");
api.deleteKeyIfExists(keyId);
}
}