Nhảy tới nội dung

HMAC Signatures

Để đảm bảo tính xác thực và toàn vẹn dữ liệu, Fundiin yêu cầu các platform request và callback được ký. Chữ ký này dựa trên HMAC (Hash-based Message Authentication Code), được tính bằng request body và secret key chỉ bạn và Fundiin biết.

Chữ ký

Trước khi gửi một yêu cầu tới Fundiin, bạn cần tạo chữ ký và gán vào header. Khi Fundiin nhận được yêu cầu, chữ ký cũng được tạo bằng cách sử dụng request body và secret key, được lưu trữ trên phía Fundiin. Bằng cách xác minh rằng cả hai chữ ký là giống nhau, Fundiin có thể đảm bảo yêu cầu là từ đối tác và không bị sửa đổi trong quá trình truyền tải.

Xác minh callback

Bạn cũng có thể xác minh callback nhận từ Fundiin bằng cách tạo chữ ký tương ứng và so sánh với chữ ký trong header. Việc này giúp xác nhận callback được gửi bởi Fundiin và không bị sửa đổi trong quá trình truyền tải.

Signature Generator

Dùng tool này để tạo chữ ký HMAC SHA-256 của Fundiin từ raw request body cho merchant APIs hoặc lender webhooks.

Signature generator

Tạo HMAC SHA-256 signature

Dán raw request body đúng như body sẽ gửi đi. Fundiin ký raw text, nên whitespace và thứ tự field đều ảnh hưởng signature.

112 ký tự112 bytes
Signaturee13b8e7a619dc37b065714a69fe46157da30e9d67d7db51f86114f84ad6067e8

Tạo Chữ ký

Fundiin sử dụng thuật toán HMAC SHA-256 để tạo chữ ký

signature = HMAC(algorihtm, secretKey, body)

With:

  • algorithm: Thuật toán bảo mật. Giá trị mặc định của thuật toán được sử dụng là HMAC SHA-256.
  • secretKey: Key được cung cấp bởi Fundiin trong quá trình đăng ký.
  • body: Dữ liệu được sử dụng để tạo chữ ký

Vui lòng đảm bảo thực hiện quá trình tạo chữ ký này chính xác để đảm bảo việc giao tiếp với API của Fundiin là an toàn và xác thực.

Chữ ký HMAC SHA-256 được tạo bằng cách sử dụng request body và secret key được cung cấp, sau đó được mã hóa dưới định dạng hexa.

Cách tạo chữ ký HMAC SHA-256 cho các ngôn ngữ lập trình thông dụng:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class SignatureGenerator {

public static String generateHmacSHA256Signature(String secretKey, String data) {
try {
Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), "HmacSHA256");
hmacSHA256.init(secretKeySpec);
byte[] hash = hmacSHA256.doFinal(data.getBytes());

StringBuilder result = new StringBuilder();
for (byte b : hash) {
result.append(String.format("%02x", b));
}
return result.toString();
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
e.printStackTrace();
return null;
}
}
}