Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>To explain my goal here a little better, I needed to take some phpseclib key information which was json_encode(), base64_encode(), chunk_split(), emailed and reverse the entire process in the browser for localstorage via copy/paste to a textarea form. Now that I managed to get my own code working properly I hope there is some information in what I was attempting to achieve that can help someone else.</p> <p>With a lot more reading and tinkering I managed to get what I was attempting to do above working fully with the help of the Base64/UTF-8 Encode/Decode library found here: <code>https://gist.github.com/Nijikokun/5192472</code></p> <p>Note: Save a local copy of the base64-utf8.module.js to your server because using it from GitHub like a CDN doesn't appear to work in all cases. My browser (Chrome v30.0.1) complains about it being text/plain instead of text/javascript or application/javascript and eventually errors out with <code>Uncaught ReferenceError: base64 is not defined</code> if run.</p> <p>Here is a full copy of the updated code.</p> <pre><code>$.validator.addMethod("trimAndDecode", function(value) { value = value.trim(); value = value.replace(/[\r\n]*/g, ""); value = base64.decode(value); return value; }, "Please check your input."); $(document).ready(function() { $("#myForm").validate({ rules: { b64Field: { regex: '^[a-zA-Z0-9=\\s]*$', maxlength: 8192, minlength: 512, required: true, trimAndDecode: true } } }); }); </code></pre> <p>So when submitting a block of chunk_split, base64 encoded content like this:</p> <pre><code>eyJjbGllbnQiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t LS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBSjZmK3cydzRU TWxFN2dUeEt1K0FLTUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0t LS0iLCJwcml2YXRlS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0t LVxyXG5NR0VDQVFBQ0VRQ2VuXC9zTnNPRXpKUk80RThTcnZnQ2pBZ01CQUFFQ0VB V1UxMzZaMUxLNTh4TUw5UFB6cStFQ1xyXG5DUURMeE12b2grVGEyd0lKQU1kSTNw NDBOWWZaQWdoMUp2VVJBS2hjQndJSWJmckJJUDRmTE1FQ0NFbWxGUjArXHJcbk5j SWFcclxuLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iLCJwYXNzUGhyYXNl IjoiODAxYTY5MTZjMDFhMmMyYzQ0OTYyNGQwMzJlZGE2ODczNDFmNTk0NmUyMWYz NmI0Y2NiNGMwYWI4YjRhMzg5MWY5NDc4YzllZjYwZDgzZTk5MzE3OTMwNjM0MTg4 OWRlM2IyYTRiMDlhYzVjMGY2YzMwNzRkZWVlYmM0N2FlMTZjM2ZhODFiOWYwNzk3 ODE2ZWQwNTkwZDU5NWM2N2MxYzllMmFkZTdjNWQ2ODBhZDIzYmI0MzY0NjY0NmM5 ZjA0NWJiMTFjNTAzZGEzZjViZmE2M2QzNThjNDk4ODlkZDViYTg0YTk1ZTc1YmU3 NmM2YzUwNmUxNWIxYzYwM2NlNyJ9LCJzZXJ2ZXIiOnsicHVibGljS2V5IjoiLS0t LS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJC UUFER3dBd0dBSVJBTUlXdmdnbTlMN2ZhMnE2T0hvaDY0VUNBd0VBQVE9PVxyXG4t LS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiIiwicGFzc1Bo cmFzZSI6IjE1Mjc1NGMyNjJlYzY1NjU5MmEwOTdiMjg1MTVlMDlmMDVkODdiNjAy ZDg5M2FjNDY1NGQzNjIxZTExNjc4NGQ5NmEyODY4ODE3MWEyY2ViMTQ4N2YxZTBm NTM4MGIxYmU5NTcwYzdmMDQ5ZTlhYjFkOGM5MDRjMGI4MWQ5NmQyYWMwOGFmNTVj YjhlZGYyMDJjZmQ3YTdlMjEzOWNlYjk1N2Y4MmRmNzU5MzBiMjZjMDdmMDlkOWJk YzcxNjcwYmRiMTdhZTE3MjE0MTc4MGM0YzVlNmZhNjgyODg4NmQ1MThmNTg0NGIz ZThjN2ZkOWRjMmNjNGM1NWRjMmYyNDEifX0= </code></pre> <p>It can now be trimmed and have it's carriage returns/line feeds remove to look like this:</p> <pre><code>eyJjbGllbnQiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBSjZmK3cydzRUTWxFN2dUeEt1K0FLTUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLVxyXG5NR0VDQVFBQ0VRQ2VuXC9zTnNPRXpKUk80RThTcnZnQ2pBZ01CQUFFQ0VBV1UxMzZaMUxLNTh4TUw5UFB6cStFQ1xyXG5DUURMeE12b2grVGEyd0lKQU1kSTNwNDBOWWZaQWdoMUp2VVJBS2hjQndJSWJmckJJUDRmTE1FQ0NFbWxGUjArXHJcbk5jSWFcclxuLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iLCJwYXNzUGhyYXNlIjoiODAxYTY5MTZjMDFhMmMyYzQ0OTYyNGQwMzJlZGE2ODczNDFmNTk0NmUyMWYzNmI0Y2NiNGMwYWI4YjRhMzg5MWY5NDc4YzllZjYwZDgzZTk5MzE3OTMwNjM0MTg4OWRlM2IyYTRiMDlhYzVjMGY2YzMwNzRkZWVlYmM0N2FlMTZjM2ZhODFiOWYwNzk3ODE2ZWQwNTkwZDU5NWM2N2MxYzllMmFkZTdjNWQ2ODBhZDIzYmI0MzY0NjY0NmM5ZjA0NWJiMTFjNTAzZGEzZjViZmE2M2QzNThjNDk4ODlkZDViYTg0YTk1ZTc1YmU3NmM2YzUwNmUxNWIxYzYwM2NlNyJ9LCJzZXJ2ZXIiOnsicHVibGljS2V5IjoiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cclxuTUN3d0RRWUpLb1pJaHZjTkFRRUJCUUFER3dBd0dBSVJBTUlXdmdnbTlMN2ZhMnE2T0hvaDY0VUNBd0VBQVE9PVxyXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJwcml2YXRlS2V5IjoiIiwicGFzc1BocmFzZSI6IjE1Mjc1NGMyNjJlYzY1NjU5MmEwOTdiMjg1MTVlMDlmMDVkODdiNjAyZDg5M2FjNDY1NGQzNjIxZTExNjc4NGQ5NmEyODY4ODE3MWEyY2ViMTQ4N2YxZTBmNTM4MGIxYmU5NTcwYzdmMDQ5ZTlhYjFkOGM5MDRjMGI4MWQ5NmQyYWMwOGFmNTVjYjhlZGYyMDJjZmQ3YTdlMjEzOWNlYjk1N2Y4MmRmNzU5MzBiMjZjMDdmMDlkOWJkYzcxNjcwYmRiMTdhZTE3MjE0MTc4MGM0YzVlNmZhNjgyODg4NmQ1MThmNTg0NGIzZThjN2ZkOWRjMmNjNGM1NWRjMmYyNDEifX0= </code></pre> <p>And base64 decoded to look like this:</p> <pre><code>{"client":{"publicKey":"-----BEGIN PUBLIC KEY-----\r\nMCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAJ6f+w2w4TMlE7gTxKu+AKMCAwEAAQ==\r\n-----END PUBLIC KEY-----","privateKey":"-----BEGIN RSA PRIVATE KEY-----\r\nMGECAQACEQCen\/sNsOEzJRO4E8SrvgCjAgMBAAECEAWU136Z1LK58xML9PPzq+EC\r\nCQDLxMvoh+Ta2wIJAMdI3p40NYfZAgh1JvURAKhcBwIIbfrBIP4fLMECCEmlFR0+\r\nNcIa\r\n-----END RSA PRIVATE KEY-----","passPhrase":"801a6916c01a2c2c449624d032eda687341f5946e21f36b4ccb4c0ab8b4a3891f9478c9ef60d83e993179306341889de3b2a4b09ac5c0f6c3074deeebc47ae16c3fa81b9f0797816ed0590d595c67c1c9e2ade7c5d680ad23bb43646646c9f045bb11c503da3f5bfa63d358c49889dd5ba84a95e75be76c6c506e15b1c603ce7"},"server":{"publicKey":"-----BEGIN PUBLIC KEY-----\r\nMCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAMIWvggm9L7fa2q6OHoh64UCAwEAAQ==\r\n-----END PUBLIC KEY-----","privateKey":"","passPhrase":"152754c262ec656592a097b28515e09f05d87b602d893ac4654d3621e116784d96a28688171a2ceb1487f1e0f5380b1be9570c7f049e9ab1d8c904c0b81d96d2ac08af55cb8edf202cfd7a7e2139ceb957f82df75930b26c07f09d9bdc71670bdb17ae172141780c4c5e6fa6828886d518f5844b3e8c7fd9dc2cc4c55dc2f241"}} </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload