diff --git a/encryption/encryption.go b/encryption/encryption.go
index cda03b47ea8d3c7802c44c2fdcbd9d6a2655bf3d..2a0dfc0269e21ab5a7f556d4d0dce4c3b5d2bc7b 100644
--- a/encryption/encryption.go
+++ b/encryption/encryption.go
@@ -1,6 +1,7 @@
 package encryption
 
 import (
+	"bytes"
 	"crypto/aes"
 	"crypto/cipher"
 	"crypto/hmac"
@@ -21,6 +22,24 @@ func Hash(input string, key string) string {
 	return base64.StdEncoding.EncodeToString(h.Sum(nil))
 }
 
+// GenerateHashFromObject using HMAC with SHA-256
+func GenerateHashFromObject(obejct any, secret string) (string, error) {
+	// Base64 Encode body
+	var buf bytes.Buffer
+	encoder := base64.NewEncoder(base64.StdEncoding, &buf)
+	defer encoder.Close()
+
+	err := json.NewEncoder(encoder).Encode(obejct)
+	if err != nil {
+		return "", err
+	}
+	encodedBody := buf.String()
+
+	// Sign encoded body with secret
+	hashedObject := Hash(encodedBody, secret)
+	return hashedObject, nil
+}
+
 func Md5HashString(bytesToHash []byte) string {
 	hash := md5.Sum(bytesToHash)
 	hashString := fmt.Sprintf("%X", hash)