Advertisement
Guest User

Encrypt in JS, Decrypt in PHP

a guest
Sep 28th, 2014
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.73 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="utf-8" />
  5.     <title>Encrypt with javascript and decrypt using php</title>
  6.     <meta name="generator" content="BBEdit 10.5" />
  7.  
  8.     <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
  9.     <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/pbkdf2.js"></script>
  10.     <script>
  11.         function encrypt_me(obj)
  12.         {
  13.             // alert(obj.input_value.value);
  14.  
  15.             var input_value = document.getElementById("input_value").value;
  16.             // alert(input_value);
  17.  
  18.             var salt = CryptoJS.lib.WordArray.random(128/8);
  19.             var key = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 128/32, iterations: 500 });
  20.             var iv  = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); // just chosen for an example, usually random as well
  21.  
  22.             var encrypted = CryptoJS.AES.encrypt(input_value+"_Messsage", key, { iv: iv });
  23.             var data_base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
  24.             var iv_base64   = encrypted.iv.toString(CryptoJS.enc.Base64);
  25.             var key_base64  = encrypted.key.toString(CryptoJS.enc.Base64);
  26.  
  27.             document.getElementById("data_base64").value = data_base64;
  28.             document.getElementById("iv_base64").value = iv_base64;
  29.             document.getElementById("key_base64").value = key_base64;
  30.             document.getElementById("encrypted_value").value = encrypted;
  31.         }
  32.     </script>
  33. </head>
  34. <body>
  35.     <?php
  36.  
  37.         $mode = 'text';     // choices {"text", "hidden"}
  38.         if(isset($_POST['submit']))
  39.         {
  40.             echo('<pre>'.print_r($_POST, true).'</pre>');
  41.  
  42.             $input_value = $_POST['input_value'];
  43.             $encrypted_value = base64_decode($_POST['encrypted_value']);
  44.             $decrypted_value = $_POST['decrypted_value'];
  45.  
  46.             $encrypted = base64_decode($_POST["data_base64"]); // data_base64 from JS
  47.             $iv        = base64_decode($_POST["iv_base64"]);   // iv_base64 from JS
  48.             $key       = base64_decode($_POST["key_base64"]);  // key_base64 from JS
  49.  
  50.             $decrypted_value = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted_value, MCRYPT_MODE_CBC, $iv ), "\t\0 " );
  51.             echo ("\$decrypted_value : ".$decrypted_value."<br />");
  52.         }
  53.         else
  54.         {
  55.             $input_value = "";
  56.             $encrypted_value = "";
  57.             $decrypted_value = "";
  58.  
  59.             $encrypted = "";
  60.             $iv = "";
  61.             $key = "";
  62.             $plaintext = "";
  63.         }
  64.     ?>
  65.     <form action="crypto.php" method="post" name="main_form" id="main_form">
  66.  
  67.         input_value : <input type="text" id="input_value" name="input_value" value="<?=$input_value?>" size="100"><br />
  68.         encrypted_value : <input type="text" id="encrypted_value" name="encrypted_value" value="<?=base64_encode($encrypted_value)?>" size="100"><br />
  69.         decrypted_value : <input type="text" id="decrypted_value" name="decrypted_value" value="<?=$decrypted_value?>" size="100"><br />
  70.         <br />
  71.         data_base64 : <input type="<?=$mode?>" id="data_base64" name="data_base64" value="<?=base64_encode($encrypted)?>" size="100"><br />
  72.         iv_base64   : <input type="<?=$mode?>" id="iv_base64" name="iv_base64" value="<?=base64_encode($iv)?>" size="100"><br />
  73.         key_base64  : <input type="<?=$mode?>" id="key_base64" name="key_base64" value="<?=base64_encode($key)?>" size="100"><br />
  74.  
  75.         <input type="button" id="no_submit" name="no_submit" value="Encrypt" onclick="encrypt_me(this.form);">
  76.         <br />
  77.         <input type="submit" id="submit" name="submit" value="Decrypt">
  78.     </form>
  79. </body>
  80. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement