Folks:
In case you are interested, or if you have any feedback, here is the code I use 
to test AES encryption for sending posts to interact with a mysql database.

This work is inspired by the excellent dbLib product of Andre Garza, that got 
me to look into encryption a lot deeper than I had to date.

Perhaps Andre would like to chime in here, as I am a complete novice in this 
area. What got me started was purchasing his dbLib software and getting warning 
messages that there was no “iv” vector specified. From internet searching I got 
that the encryption is vulnerable to a “Dictionary” attack. An “iv” vector is 
analogous to a “salt”, which make the encryption much more difficult to crack. 
I’m using php version 5.6.36

This should make transfers to a from a remote database pretty secure. It is 
different from password security, where only the encrypted password needs to be 
compared with the encrypted db value. Here (I think) both the server and the 
client need to have the key and iv values.

Here is the code that I used to test the encryption. If I am wrong about any of 
this, please let me know. An example like this would have saved me a bunch of 
time, so I hope it will be useful to somebody else on the list.

————Testing iv for encryption
--To test this on your own server, upload the php script where you put cgi's
-- and modify the myURL setting
on testEncryption
   put 
"http://earthexplorer.earthlearningsolutions.org/scgi-bin/wpEncryptionTest.php"; 
into myURL
   put "AES-256-CTR" into tCipher
   put "AFBDDFCFBDBBDDCCFFACGHDFFFFEEDCC" into tEncryptionKey
   put "ABCDEEABCDEEAA%A" into tIV
   put "The php should return this text." into tPostA["theQuery"]
   put "query" into tPostA["type"]
   put ArrayToJSON(tPostA,"string",pPretty) into tJson
   encrypt tJson using tCipher with key tEncryptionKey and iV tIV
   put base64encode(it) into tMyEncryptedData
   post tMyEncryptedData to url myURL
   put it into tRet
   put tRet into fld "status"
   put cr&"num chars: "&(the number of chars in tRet) after fld "status"
   put cr&base64decode(tRet) after fld "status"
end testEncryption
   
----------php script, on server ---------------------------
--Note:  you can run the above script on my server,
--to test the LC script.  
<?php
//file: wpEncryptionTest.php
//external function
 function debug($msg) {
     $debug = false;
     if ($debug) {
         error_log("[DB LIB] $msg");
         echo "$msg.\n";
        }
        }
//php code
        $encryption_key = "AFBDDFCFBDBBDDCCFFACGHDFFFFEEDCC";   
        $cipher = "AES-256-CTR"; // do not change cipher unless you know what 
you're doing
        $post = file_get_contents('php://input');
        $iv = 'ABCDEEABCDEEAA%A';
        $ivlen = 16;
        /* set for debugging. To encrypt, set to TRUE */
        $post = openssl_decrypt($post, $cipher, $encryption_key, $options=0, 
$iv);
        $req = json_decode($post,true);
        if (!$req) {
        debug("error on decrypt");
        debug(openssl_error_string());
        }
        $theOut = $req["theQuery"];
        $tRet = base64_encode("Decrypted query: $theOut.\n");
        echo $tRet;             
?>


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to