· 7 years ago · Sep 18, 2018, 08:20 AM
1package com.lftechnology.machpay.webhook.util;
2
3import com.google.gson.JsonObject;
4import org.apache.commons.codec.binary.Hex;
5
6import javax.crypto.Mac;
7import javax.crypto.spec.SecretKeySpec;
8import java.util.HashMap;
9import java.util.Map;
10
11public class EncryptTest {
12
13 private static final String HMAC_HASH_ALGORITHM = "HmacSHA256";
14 private static final String UTF_8 = "UTF-8";
15
16 public static String encode(String key, String data) throws Exception {
17 Mac sha256_HMAC = Mac.getInstance(HMAC_HASH_ALGORITHM);
18 SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(UTF_8), HMAC_HASH_ALGORITHM);
19 sha256_HMAC.init(secret_key);
20 return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes(UTF_8)));
21 }
22
23 public static String getJSONStringFromMap(Map<String,String> map){
24 JsonObject jsonObject = new JsonObject();
25 jsonObject.addProperty("id",map.get("id"));
26 jsonObject.addProperty("resource_id",map.get("resource_id"));
27 if(map.get("sender_id")!=null){
28 jsonObject.addProperty("sender_id", map.get("sender_id"));
29 }
30 jsonObject.addProperty("event_name",map.get("event_name"));
31 jsonObject.addProperty("subscription_id",map.get("subscription_id"));
32 jsonObject.addProperty("event_id",map.get("event_id"));
33 jsonObject.addProperty("timestamp",map.get("timestamp"));
34 return jsonObject.toString();
35 }
36
37 public static void main(String[] args) throws Exception {
38 Map<String, String> requestBody = new HashMap<>();
39 requestBody.put("id", String.valueOf("7057c062-b5cc-451f-a6fb-7f62d90ddc05"));
40 requestBody.put("resource_id", "b8e63f63-a84a-43ad-a283-42e831440edb");
41 requestBody.put("sender_id", "7d33c450-f771-4f5c-8dd6-8aec99f437f2");
42 requestBody.put("event_name", "transaction_processed");
43 requestBody.put("subscription_id", "6ac729de-ca9f-4322-9834-f1f132ced252");
44 requestBody.put("event_id", String.valueOf("2004a08f-b808-4d10-bd1b-85f50b1f4a4a"));
45 requestBody.put("timestamp", "2018-06-04T22:58:00.083");
46 System.out.println(encode("password", getJSONStringFromMap(requestBody)));
47 }
48}