<?php

$g = gmp_init(3);
$p = gmp_init(5);

$a = gmp_import(openssl_random_pseudo_bytes(12));;
$b = gmp_import(openssl_random_pseudo_bytes(12));;

$A = gmp_powm($g, $a, $p);
$B = gmp_powm($g, $b, $p);

$Astr = gmp_strval($A);
$Bstr = gmp_strval($B);
echo "A: $Astr \n";
echo "B: $Bstr \n";

$Ba = gmp_powm($B, $a, $p);
$Ba = gmp_powm($A, $b, $p);
$gab = gmp_powm($g, gmp_mul($a, $b), $p);

$BaStr = gmp_strval($Ba);
$AbStr = gmp_strval($Ba);
$gabStr = gmp_strval($gab);
echo "Ba: $BaStr \n";
echo "Ab: $AbStr \n";
echo "K: $gabStr \n";