- var_dump: documentation ( source)
- chr: documentation ( source)
- unpack: documentation ( source)
<?php
function OTP($input, $pad) {
$inputlen = strlen($input);
$padlen = strlen($pad);
$inputbytes = unpack("C*", $input); //Pack C* will convert a string into a byte array, such as 'abc' to Array(0x61, 0x62, 0x63)
$padbytes = unpack("C*", $pad);
$output = "";
for($i = 0; $i < $inputlen; $i++) //Loop through the input string
$output .= chr($inputbytes[$i + 1] ^ $padbytes[$i % $padlen + 1]);
return $output;
}
var_dump(OTP("ABC", "123"));