package org.example.dataflow; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.Serializable; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class Crypto implements Serializable { private static final String TAG = "Crypto"; transient private Mac hmacSHA256; public Crypto() { init(); } public void init() { try { hmacSHA256 = Mac.getInstance("HmacSHA256"); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } public byte[] calculateHmacSHA256(byte[] input, byte[] key) { byte[] output = null; try { if(hmacSHA256 == null) { init(); } hmacSHA256.init(new SecretKeySpec(key, "HmacSHA256")); output = hmacSHA256.doFinal(input); } catch (InvalidKeyException e) { e.printStackTrace(); } return output; } }