Developer Guide

SHA2 Hash Function

FraudLabs Pro uses SHA2 to hash the sensitive values, such as, email_hash, username_hash, password_hash and card_hash. User is required to hash these values prior to API request using the sample codes given below, otherwise the API will returns you the error.

Online Hash Generator

To confirm you have implemented the hashing correctly, you can compare the result with our hash generator.

Sample Codes

<?php function fraudlabspro_hash($s){
	$hash = 'fraudlabspro_' . $s;
	for($i=0; $i<65536; $i++) {
		$hash = sha1('fraudlabspro_' . $hash);
	}
	$hash2 = hash('sha256', $hash);
	return $hash2;
} ?>
import java.security.MessageDigest;
import java.util.Formatter;

public class main {
	public static String SHA1(String s) throws Exception{
		MessageDigest sha1 = MessageDigest.getInstance("SHA1");
		Formatter formatter = new Formatter();

		sha1.update(s.getBytes());

		byte[] hash = sha1.digest();

		for(byte b : hash){
			formatter.format("%02x", b);
		}

		return formatter.toString();
	}

	public static String fraudlabspro_hash(String s) throws Exception{
		Integer i = 0;
		String hash = "fraudlabspro_" + s;

		for(i=0; i<65536; i++){
			hash = SHA1("fraudlabspro_" + hash);
		}

		MessageDigest sha256 = MessageDigest.getInstance("SHA-256");

		byte[] hashBytes = sha256.digest(hash.getBytes());

		StringBuilder hash2 = new StringBuilder();

		for (byte b : hashBytes) {
			hash2.append(String.format("%02x", b));
		}

		return hash2.toString();
	}
}
Imports System
Imports System.Security.Cryptography
Imports System.Text

Public Function fraudlabspro_hash(ByVal s As String) As String
	Dim i As Integer = 0
	Dim hash As String = "fraudlabspro_" + s
	For i = 1 To 65536
		hash = ComputeSHA1Hash("fraudlabspro_" + hash)
	Next
	Using mysha = SHA256.Create()
		Dim inputBytes As Byte() = Encoding.UTF8.GetBytes(hash)

		Dim hashBytes As Byte() = mysha.ComputeHash(inputBytes)

		Dim hash2 As New StringBuilder()
		For Each b As Byte In hashBytes
			hash2.AppendFormat("{0:x2}", b)
		Next
		Return hash2.ToString()
	End Using
End Function

Public Function ComputeSHA1Hash(ByVal s As String) As String
	Dim bytes() As Byte
	Dim x As String = ""
	Using mysha = SHA1.Create()
		bytes = Encoding.ASCII.GetBytes(s)
		bytes = mysha.ComputeHash(bytes)
		For Each b As Byte In bytes
			x += b.ToString("x2")
		Next
		Return x
	End Using
End Function
using System.Security.Cryptography;
using System.Text;

public string fraudlabspro_hash(string s)
{
	int i = 0;
	string hash = "fraudlabspro_" + s;

	for (i = 1; i <= 65536; i++)
	{
		hash = ComputeSHA1Hash("fraudlabspro_" + hash);
	}
	using (SHA256 mysha = SHA256.Create())
	{
		byte[] inputBytes = Encoding.UTF8.GetBytes(hash);

		byte[] hashBytes = mysha.ComputeHash(inputBytes);

		StringBuilder hash2 = new StringBuilder();
		foreach (byte b in hashBytes)
		{
			hash2.AppendFormat("{0:x2}", b);
		}
		return hash2.ToString();
	}
}

public string ComputeSHA1Hash(string s)
{
	string x = "";
	using (SHA1 mysha = SHA1.Create())
	{
		byte[] bytes = Encoding.ASCII.GetBytes(s);
		bytes = mysha.ComputeHash(bytes);

		foreach (byte b in bytes)
		{
			x += b.ToString("x2");
		}
		return x;
	}
}
import hashlib

def fraudlabspro_hash(s):
	hash = "fraudlabspro_" + s

	for i in range(65536):
		hash = hashlib.sha1(("fraudlabspro_" + hash).encode('utf-8')).hexdigest()

	hash2 = hashlib.sha256(hash.encode()).hexdigest()

	return hash2