Sample code for 30+ languages & platforms
Java

Plaza API (bol.com) HMAC-SHA256 Authentication

See more Encryption Examples

Demonstrates how to compute the Authorization header for bol.com using HMAC-SHA256.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Crypt2;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Crypt2 crypt = new Crypt2();

        crypt.setEncodingMode("base64");
        crypt.setHashAlgorithm("sha256");
        crypt.setMacAlgorithm("hmac");

        String publicKey = "oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE";
        String privateKey = "MaQHPOnmYkPZNgeRziPnQyyOJYytUbcFBVJBvbMKoDdpPqaZbaOiLUTWzPAkpPsZFZbJHrcoltdgpZolyNcgvvBaKcmkqFjucFzXhDONTsPAtHHyccQlLUZpkOuywMiOycDWcCySFsgpDiyGnCWCZJkNTtVdPxbSUTWVIFQiUxaPDYDXRQAVVTbSVZArAZkaLDLOoOvPzxSdhnkkJWzlQDkqsXNKfAIgAldrmyfROSyCGMCfvzdQdUQEaYZTPEoA";

        // The string to sign is this:
        // http_verb +'\n\n'+ content_type +'\n'+ x_bol_date +'\n'+ 'x-bol-date:'+ x_bol_date +'\n'+ uri

        String http_verb = "GET";
        String content_type = "application/xml";
        String x_bol_date = "Wed, 17 Feb 2016 00:00:00 GMT";
        String uri = "/services/rest/orders/v2";

        // IMPORTANT: Notice the use of underscore and hyphen (dash) chars in x-bol-date vs. x_bol_date.
        // In one place hypens are used.  In two places, underscore chars are used.
        StringBuilder sb = new StringBuilder();
        sb.append(http_verb);
        sb.append("\n\n");
        sb.append(content_type);
        sb.append("\n");
        sb.append(x_bol_date);
        sb.append("\nx-bol-date:");
        sb.append(x_bol_date);
        sb.append("\n");
        sb.append(uri);
        System.out.println("[" + sb.getAsString() + "]");

        // Set the HMAC key:
        crypt.setMacKeyEncoded(privateKey, "ascii");
        String mac = crypt.macStringENC(sb.getAsString());

        // The answer should be: nqzLWvXI1eBhBXrRx5NF23V5hS8Q1xWCloJzPi/RAts=
        System.out.println(mac);

        // The last step is to append the public key with the signature
        StringBuilder sbHeader = new StringBuilder();
        sbHeader.append(publicKey);
        sbHeader.append(":");
        sbHeader.append(mac);

        String hdrValue = sbHeader.getAsString();
        System.out.println(hdrValue);
    }
}