Skip to main content

Need to replicate similar to java or Python code

 

Java example

import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import java.nio.charset.StandardCharsets;import java.security.InvalidKeyException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.HexFormat;public class Main {    public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {        final String secret = "It's a Secret to Everybody";        final String payload = "Hello World!";        final String givenSignature = "sha256=a4771c39fbe90f317c7824e83ddef3caae9cb3d976c214ace1f2937e133263c9";        final SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256");        final Mac mac = Mac.getInstance("HmacSHA256");        mac.init(keySpec);        final byte[] digest = mac.doFinal(payload.getBytes(StandardCharsets.UTF_8));        final HexFormat hex = HexFormat.of();        final String calculatedSignature = "sha256=" + hex.formatHex(digest);        if (!MessageDigest.isEqual(calculatedSignature.getBytes(), givenSignature.getBytes())) {            System.out.println("Signatures do not match\nExpected signature:" +                    calculatedSignature + "\nActual: signature: " + givenSignature);        } else {            System.out.println("Signatures match");        }    }}

      

Python example

import hashlibimport hmacsecret = "It's a Secret to Everybody"payload = "Hello World!"given_signature = "sha256=a4771c39fbe90f317c7824e83ddef3caae9cb3d976c214ace1f2937e133263c9"hash_object = hmac.new(    secret.encode("utf-8"),    msg=payload.encode("utf-8"),    digestmod=hashlib.sha256,)calculated_signature = "sha256=" + hash_object.hexdigest()if not hmac.compare_digest(calculated_signature, given_signature):    print(        "Signatures do not match\nExpected signature:"        f" {calculated_signature}\nActual: signature: {given_signature}"    )else:    print("Signatures match")

 

Apex:

 

I am struck on how to convert using crypto class - SecretKeySpec line.

 

any help will be much apricated?

 

#Salesforce Developer @* Salesforce Developers *

2 answers
  1. Jul 26, 2024, 8:32 PM

    There is code example also available here which generates HMAC and then verifies it. 

0/9000