Folks:
Woke up this morning and realized I need to clarify a couple of points on my 
post.
1. For a test, you can use the LC script I included, exactly as given, which 
will access the included php test script on my server. 
2. The php script just returns the decrypted text that you put in the 
tPostA[“theQuery”] array element. For real world use, you would want to, in the 
php, encrypt the return text.
3. As far as I can tell, I need to have the encryption key and iV stored on 
both the LC app (to encrypt the text that is being sent) and the php script, to 
decrypt it.
4. I left out the part where the php encrypts the return value and the LC 
decrypts it. I’ll add it in if anybody wants it.

Best,
Bill

> On Jun 24, 2018, at 5:17 PM, William Prothero via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> 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


_______________________________________________
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