/** This is an example of usage big_int extension RSA-like implementation of algorithm Attention: do not use this implementation in real life, because keys are generating with not very good "random generator". See microtime_generator() function below. */ require_once dirname(__FILE__) . '/std_header.php'; define('KEY_LENGTH', 1024); // length of RSA keys set_time_limit(0); // generate RSA key pair echo 'generating ' . KEY_LENGTH . '-bit key pair...'; $key_pair = generate_key_pair(KEY_LENGTH); echo 'end' . "<br/>\n"; echo 'public key: [' . base64_encode($key_pair['public_key']) . ']' . "<br/>\n"; echo 'private key: [' . base64_encode($key_pair['private_key']) . ']' . "<br/>\n"; echo 'shared modulus: [' . base64_encode($key_pair['n']) . ']' . "<br/>\n"; // encrypt $text $text = 'top secret message'; echo "plaintext [{$text}]<br/>\n"; $enc_text = encrypt_text($text, $key_pair['public_key'], $key_pair['n']); echo 'encrypted text: [' . base64_encode($enc_text) . "]<br/>\n"; // decrypt text $plain_text = encrypt_text($enc_text, $key_pair['private_key'], $key_pair['n']); echo "decrypted text [{$plain_text}]<br>\n"; /************************************************************************/ /** encrypts / decrypts $text with key ($e, $n)
<?php #generate a pair of public/private keys for authentication. The public key will be stored in s3db.org/central, along with the url for this implementation require_once 'Crypt/RSA.php'; $keys = generate_key_pair(); /***********************************************************/ function generate_key_pair() { $key_length = '64'; $key_pair = new Crypt_RSA_KeyPair($key_length); check_error($key_pair); $public_key = $key_pair->getPublicKey(); $private_key = $key_pair->getPrivateKey(); $keys = array('public' => $public_key->toString(), 'private' => $private_key->toString()); return $keys; } // error handler function check_error(&$obj) { if ($obj->isError()) { $error = $obj->getLastError(); switch ($error->getCode()) { case CRYPT_RSA_ERROR_WRONG_TAIL: // nothing to do break; default: // echo error message and exit echo 'error: ', $error->getMessage(); exit; } }
* @package Crypt_RSA * @author Alexander Valyalkin <*****@*****.**> * @copyright 2005, 2006 Alexander Valyalkin * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version 1.2.0b * @link http://pear.php.net/package/Crypt_RSA */ /** * this is a sample script, which shows the usage of Crypt_RSA package */ require_once 'Crypt/RSA.php'; $task = isset($_GET['task']) ? $_GET['task'] : ''; session_start(); switch ($task) { case 'generate_key_pair': generate_key_pair(); break; case 'create_sign': create_sign(); break; case 'validate_sign': validate_sign(); break; case 'encrypt': encrypt(); break; case 'decrypt': decrypt(); break; } print_layout();