"); ?> cryptbin =6 && $c<=8) { $gen .= chr(32); } else if ($c==9) { $gen .= chr(13); } } return $gen; } function numgen($size) { $gen = chr(mt_rand(49,57)); $size--; for ($i=0; $i<$size; $i++) { $gen .= chr(mt_rand(48,57)); } return $gen; } function getdelim($KEY, $which) { if ($which == 1) { $delim = md5(substr($KEY, 0, -16)); } if ($which == 2) { $delim = md5(substr($KEY, 15, -0)); } return $delim; } function gensecret() { $secret = numgen(7); $secret .= gen(29); return $secret; } function genpublic($secret) { global $p; global $g; $secret1 = substr($secret, 0, -29); $secret2 = substr($secret, 7, 29); $secret2 = md5($secret2); $public = gmp_pow($g, $secret1); $public = gmp_mod($public, $p); $public = gmp_strval($public); return $public.$secret2; } function pub2key($secret, $public) { global $p; $secret = substr($secret, 0, -29); $public1 = substr($public, 0, -32); if (strlen($public) == 35) { $public2 = substr($public, 3, 32); } else { $public2 = substr($public, 4, 32); } $secret = strval($secret); $public1 = strval($public1); $key = gmp_pow($public1, $secret); $key = gmp_mod($key, $p); $key = gmp_strval($key); $key .= $public2; $key = md5($key); return $key; } function key2pub($secret, $public) { global $p; $secret1 = substr($secret, 0, -29); $secret2 = substr($secret, 7, 29); $public1 = substr($public, 0, -32); $secret1 = strval($secret1); $public1 = strval($public1); $key = gmp_pow($public1, $secret1); $key = gmp_mod($key, $p); $key = gmp_strval($key); $genpublic = genpublic($secret); if (strlen($genpublic) == 36) { $x = 4; } else { $x = 3; } if (substr($genpublic, $x, 32) == md5($secret2)) { $key .= md5($secret2); $key = md5($key); return $key; } else { return 0; } } function getkey($KEY, $padlength) { $keypad1 = substr(md5($KEY.$padlength), 0, -24); $keypad2 = substr(md5($KEY.$padlength), 24, -0); $KEY = substr(md5($keypad1.$KEY.$padlength.$keypad2), 1, -1); return $KEY; } function extractunit($string, $delim1, $delim2) { $pos = stripos($string, $delim1); $str = substr($string, $pos); $str_two = substr($str, strlen($delim1)); $second_pos = stripos($str_two, $delim2); $unit = substr($str_two, 0, $second_pos); return $unit; } function encrypt($field, $KEY) { $iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_TWOFISH, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM); $padlength = strlen($KEY) * 768; $KEY = getkey($KEY, $padlength); $enc .= megagen($padlength); $enc .= getdelim($KEY, 1); $enc .= $field; $field = 0; $enc .= getdelim($KEY, 2); $enc .= megagen($padlength); $enc = mcrypt_cbc(MCRYPT_TWOFISH, $KEY, $enc, MCRYPT_ENCRYPT, $iv); $KEY = 0; return $enc; } function decrypt($field, $KEY) { $iv = mcrypt_create_iv(mcrypt_get_block_size(MCRYPT_TWOFISH, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM); $padlength = strlen($KEY) * 768; $field = trim($field); $KEY = getkey($KEY, $padlength); $dec = mcrypt_cbc(MCRYPT_TWOFISH, $KEY, $field, MCRYPT_DECRYPT, $iv); if (strstr($dec, getdelim($KEY, 1)) && strstr($dec, getdelim($KEY, 2))) { return htmlspecialchars(extractunit($dec, getdelim($KEY, 1), getdelim($KEY, 2))); } else { return "Invalid key."; } $KEY = 0; } /* END FUNCTIONS */ print("
cryptbin

"); if (isset($_GET['gen'])) { $secret = gensecret(); $public = genpublic($secret); print("

Send your public key to your friends, keep your secret key safe!

Secret key:

Public key:

"); } else if (isset($_GET["id"]) && $unlockneeded) { print("

This data is encrypted and needs to be unlocked.

"); print(""); print("
Your secret key:

"); if (strpos($_GET["id"], "-") <= 0) { print("Sender's public key:

"); } print(""); if (strpos($_GET["id"], "-")) { print("

Decrypt permanently"); } print("
"); } else if ($unlocked) { print("

You have unlocked data ".$_POST['ID']."

"); print(""); print("
Permalink:

"); print(""); print("
"); } else { print("

You need a cryptbin key pair.
Don't have one?

Your secret key:

Recipient's public key:



Insurance mode (?)

"); } ?>