// [CRUCIBLE-SEED]
// category: insecure_crypto
// severity: high
// language: java
// expected: SHA-1 used for HMAC signature and MD5 for file integrity check

import java.security.MessageDigest;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class IntegrityChecker {
    public static String computeHmac(String data, String key) throws Exception {
        // Vulnerable: HMAC-SHA1 is weak for new applications
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(new SecretKeySpec(key.getBytes(), "HmacSHA1"));
        byte[] raw = mac.doFinal(data.getBytes());
        StringBuilder sb = new StringBuilder();
        for (byte b : raw) sb.append(String.format("%02x", b));
        return sb.toString();
    }

    public static String md5File(byte[] fileBytes) throws Exception {
        // Vulnerable: MD5 used for file integrity — collision attacks possible
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] hash = md.digest(fileBytes);
        StringBuilder sb = new StringBuilder();
        for (byte b : hash) sb.append(String.format("%02x", b));
        return sb.toString();
    }
}
