Ejemplo n.º 1
0
<?php

// crypto.php
// Simple tests for crypto functions
require_once "ssl.php";
$privkeys = array(512 => "-----BEGIN RSA PRIVATE KEY-----\nMIIBOgIBAAJBALhqOmX6lnY56G0hNrzj7t68VVkRiYqoQwNpDofajvUkrHVukI0l\nVVXxxE4CMAzMvl9Qd8d4MUF/2+E14pi6QCkCAwEAAQJAPnOrBzIPlkYSEjL3SIyg\nLkn1VU59F7nXx+XiB9vaIeYPpv82Bdp+7q9ZGIIPKolOFtThwy6x9i9hsa6MdUZi\nAQIhAO/Zhxf0OS6rakMGWAS7zAeo3xBmDUlRLVMDMchAanQJAiEAxNUhEDg1wZAW\nstuGjdDBT+QntrEpsvA82dQGM1qnsyECIE2YIB5dwkoY5o28dalCYCVyOogBm/bG\nLlWWyPox7L6RAiAb1E5ybqAbF/Y9n5AsqOFMHGQJDo9ov1K7MaEWzbB8QQIhAIz/\njKW4I70y/1tqPKHripEoYK0EJx0cGhaOjtYSwHX6\n-----END RSA PRIVATE KEY-----\n", 1024 => "-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQDIFioqUZVNepqADskqPGQ4NyZ2jojrxHdqZSqgS6/mQoEUZI9y\nkk5cF3/EmOxjkF5D7CHgpnwUmZfiw9ZfEDCUvr6+LId/jvohpZ8l9jN/IkAdQuUV\nfCsiIEoxwV2AgqeFdmRI/QBFnuUfaolj7buhNUbphIvAPLz7HZHCvVNwwQIDAQAB\nAoGAHkuU2NF/fLq6l/clKFr6hbR8A2lze9dEiXyF5r1vBbs+FhtfyOY0LSd1tgu9\nhxm93CTtwDkVAn17DN/AHqax5B8YuD8VnaOWrQKoCsj6seyf8Qs1Az3OhjReLV64\nb4IFkn0zf92RAEyzWk0H2sB1VfodBWkBWjclzr8ZiUKtfUECQQDuUpGCsRgOmVMz\nW+NtDEorWQcZh4iVo90qkpvgDsOGe+8zYO9+9z+7TxLP1F/EAhqUiHYMrwI/gpnG\nN7s4YFtZAkEA1u2LvIuLM5ffACDOrGhTPmuFA7lHYLeDNvpVVaOBtrfd6RRMLbOi\nB7aUz7GJ/5FEzdBx62upNVbqkQ5Tq+LbqQJATEZS2eAyEeISldpv5GPNjSgWNJ6D\nIVlrnIeFqeUvwOgDe48nt5wMYreBDtEqwUHnHei6135fmtICw0Ts/7MfKQJBAJDG\nvuQo04HTgaHid5VnSPu5DYauncgmlbrI8gaX916PiGnjBFWctT6g3KjzHNQMlN5W\n1QYSJY8Kl0NS9UXJsNECQQCES4l2zFhSvrU5ob42aboeKM4fCy04g22M1Y15JgMb\nSjqw1d9dv6dhpdh6aiHtIc9+jxOD9d4M/y6gwn2OZlvU\n-----END RSA PRIVATE KEY-----\n", 1536 => "-----BEGIN RSA PRIVATE KEY-----\nMIIDfQIBAAKBwQChhOe3Famts8rimFSOyQEnKxhunIv10P786Af5wIDJUVcPycrS\nkmhqQ6+w2Kpa0WLlOD/5MjMQtByRuVJUKL+uQyNVIh4xIBcXfNdgCFbhBop7F3Ta\nGReOh5r0AekY01ReQHtrVd0o4mlKLO12U0v9qnZbBcPOuyFaD8sedpPXnY4XdLDP\nkZ2AmTplnCIwVhIxpyLVY/HQe3GZLyJIZCNDhpP5jnR11QDCEphQP+CG5dYtr1/z\nIbL6cVw4Kfu6ndECAwEAAQKBwQCA2f/oZNW6BuZholhCmEPdNVoGU8irz5C7vXcv\nXMzgzY0AwWCWX8oAjALKt+4fCU81wYv3hn6KYsUv04HENcXEhTbYoaEoW4tQZ32B\n1OVKGue6jtnfa4kJYVDSO/vynBM7demMHX8Ny43gJGnCxKikJH6uKoglVf/2m0MS\nHhA+ggYJvssxmBiSEhcOh8lWgd5cN8eYBnqeveP75DgJy1fPMJ0n3zatpg3Kr0e9\nbOxCZo1HOIPP3uIyGV8nouqNPMkCYQDTay+knnjJpvIAAGpupictdyeaNi5qkulN\n17AxVit+l+//AP2qJz0BpslC2NtknrINvVu/KOyadUf2qfM4mQXhBssn2tW3gsr5\nBcc3CWTeiFSGPgbD2RVWSyq6NCK2t5MCYQDDlAo9tOEcB4j6O1lJRyRv7eF1pLBB\nE+RaeCm/BnHJEpm4Gpkaw6FEKntlV3Iq8B87R1nlNMnwAtbYcxYtcKOG/Gi3tYbs\nKyh+GUB7K16V3zyLsLbQaj6p11BiV/ab64sCYGT42DRDC2UjuoiNqkdWS3fHZL6e\nCeUUbSCkVp35jaRUZGbhzkSpoNVdFto6P+36bQdq3JqbrQTH5qrD2Em7q7chS32p\nYlDWwqHURKTgc7BkZBoJHaoDz9D67Vko9TtWyQJgCAfVH9GEiMUab8PuF58vNNVc\ns5rujc2GS9yxQiG+nFYCL9gPv1SXE5h29qNPkcnIToPQgiPXwt4q+jpHh9gfLtTA\nbAKtJpdjE0JwLl6KhLbk4ouABjDGn+yyZUddXeufAmEAraFRn21V5twI7Szb8/Ln\n0Mpqpbv703IAZ+TlORVPo8RVvuEcgXxLUnHj8n+OLIX/65CA9LFDz5D9FzVe/FJ2\niFqQuBm1+5YZf70G+B9cSub6qecrOpiFJSB7jxJqYtiW\n-----END RSA PRIVATE KEY-----\n", 2048 => "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAzVkAifGhnJ1RbIj2VX386QYCbIUPYv8PUnBcXY374hy6sNzF\nuqSNsBxvbEH17jVvwx/6wl3umuLDzn+rPc+4X9KC7GTDy9sL8373veSC0edU87/N\n5hoJQTadbHaMG36A8hL9Y5vuiSsxR1+Zca1OhaLs3VJLsyMDG3CYkchBiDByUsSS\nF1+dc3GmrfRNTLAjguIHfNWr9fM+eCoDELZ63OpswwJlTjIeMnqNah4vFD8EKYuJ\nBs+KlkGJAm8zYKhY9DqwMz24p2QD7mPGdm3jE28zQft1N88LMN3ax2fAIB/fw6c2\nZ1GSvZ9uURKQczlzyTGs+jCVpP24CKkB4kUNPwIDAQABAoIBAHS7PoIsGMnV6D6B\nkT7CMu4oW2JjNX76LTSY6PjJyMEdwcbeiYxzFJRjZbetu2bhe5n5aOvqx8PGWrbd\nfnPRzCa0nXZSRbdx2tZde+m3p+I41eMGSr6eWFp4+H562WSbwiNaRi7EqpHROt8u\n6iRj93oiRvH9YUkBAzgrBqAArbgDhVSX72PHJAnRgvaTH+bbBTy4s7Z6AIznM1qI\nZwkQPj/Y8aRFPrqgc2OkJAYtyKFmfx3TfzR9IotCMGCufgGfujBbVKe6syDVYrsA\nBHJ24NWIqfR9pXEAzOzSj8iY+0QsZ4juowBmOMXjkZKuZ04oOR9xkKEZ5ZXvnPUB\ncKkzJUECgYEA8DLNqT8S9o7GdLXzQz/sn1X06LoVj20EWAd8B1FGu8bg/BaAQRdP\nvSL4j/ScZgWNX4tEtzNCEJaPrWQ1vhwrrMKgbt/aQD21Lg8Woahovy4SDszCE96h\nd7AK4xXgDDxO/6SO76+X/wn7nqbK1TDQMYZjQFHmCs64UxYbXwKvNt8CgYEA2ttG\nSHb0B9nq9vuR3izR8inZJDx0YTsErmXE7jUmu+PjC5zCcEwU8mS5qKztbD3xIDb+\nLFv6cEzihJVxiDtz5iCXhSzUbRIylHrXQlJZsVZbOpAKKo6TRNcWGTnA5wpt8pcE\nIRh7WM/KUrfE7K7FpSGa6Gjc8W44dLak7uAU1aECgYEAwt10W8n/6GcMOcMjB3vk\ny59AgU32D9WxoHjx9j3J1K0T+W+HvUbcOeUVIjSgbWQzvT+PD9FV139OMK0LrJ/O\nDuoWndydg2CMjEFRavTlhbQqkjcrfFMxS5hWPMSSb1q9/EfUbj9WYGII8D0AcNSZ\nEpSkEJpgtoPepglZS0syOqECgYBBsKVU5Nd0b9VV0sbCsCNIE4WImdi4wnUyP3uv\noCaDKPCiMKgv+rYi11beqSEOZz0z1S3PdMAj6v/mmdCc+nNcNJYmNAGCx36FEKYB\n0yP21ZvGZSuYAHl1pTWN1sbu0jOUJ/3mTSngy2XIFD64Z/ENEpwjfC4tDU9GwPea\nd4npYQKBgDj3wXOkns7iU0vHP2+QgSW2Crk3IfoIJaow6cFZxpiakt170IJLo8oz\nZhLW+OsFSXPI+kla9Xz/f6YWozykDciDOGO4e4CI4X2YxaoHoX3rlMLiDFlzfwD8\n/yvOPkbX72OhnpO/vJp0YSBFmNwSZ8D96XdNcUwyEU9tSCBVBakn\n-----END RSA PRIVATE KEY-----\n", 3072 => "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n", 4096 => "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n");
function random_string($len)
{
    $res = '';
    for ($i = 0; $i < $len; $i++) {
        $res .= chr(mt_rand(0, 255));
    }
    return $res;
}
foreach ($privkeys as $keylen => $privkey) {
    //$str = substr(base64_encode(random_string(384)), 0, 384);
    $str = random_string(4096);
    echo "keylen: {$keylen}, strlen(str): " . strlen($str) . "\n";
    $ssl = new ssl();
    $privkey = $ssl->load_privkey($privkey);
    $pubkey = $ssl->privkey_to_pubkey($privkey);
    $enc = $ssl->pubkey_encrypt($str, $pubkey);
    $dec = $ssl->privkey_decrypt($enc, $privkey);
    echo "len(enc): " . strlen($enc) . ", len(dec): " . strlen($dec) . "\n";
    if ($dec != $str) {
        echo "Didn't decrypt properly\n";
    } else {
        echo "All is well\n";
    }
}