JavaScript Encryption

JavaScript Encryption

JavaScript powers the browser, Node servers, Electron desktops, and a pile of build tools. Every bundle sent to the client is effectively public: minification hides nothing from someone who pauses in DevTools. On the server, plain .js on disk is just as grep-friendly.

That is a bad fit for naked API keys or private webhook URLs in front-end code—assume they will leak. For Node or closed extensions, encrypting literals still helps against quick string dumps before you ship.

String encryption supports both UNICODE and ANSI strings.

You can read more about JavaScript and JavaScript strings at:

JavaScript encryption (UNICODE Example)

Plaintext reference: StringEncrypt sample

<script type="text/javascript">
// encrypted with https://www.stringencrypt.com (v1.5.0) [JavaScript]
// myString = "StringEncrypt sample"
var myString = "\u0B37\u6F49\uA54F\u7754\u0A0D\u7523\uD4B5\u68BA" +
               "\uCA86\u39A5\u8019\u22B5\uA6B9\u630F\u870E\u2D48" +
               "\u0C97\u1D26\uC7A2\u81F1";

for (var VrDKO = 0, Gbqok = 0; VrDKO < 20; VrDKO++)
{
	Gbqok = myString.charCodeAt(VrDKO);
	Gbqok = ((Gbqok & 0xFFFF) - VrDKO) & 0xFFFF;
	Gbqok = ((Gbqok & 0xFFFF) + 1) & 0xFFFF;
	Gbqok = (((Gbqok & 0xFFFF) >>> (VrDKO % 16)) | ((Gbqok & 0xFFFF) << (16 - (VrDKO % 16)))) & 0xFFFF;
	Gbqok = (((Gbqok & 0xFFFF) << 5) | ((Gbqok & 0xFFFF) >>> 11)) & 0xFFFF;
	Gbqok = (((Gbqok & 0xFFFF) << (VrDKO % 16)) | ((Gbqok & 0xFFFF) >>> (16 - (VrDKO % 16)))) & 0xFFFF;
	Gbqok = (((Gbqok & 0xFFFF) >>> 8) | ((Gbqok & 0xFFFF) << 8)) & 0xFFFF;
	Gbqok = (Gbqok ^ VrDKO) & 0xFFFF;
	for (var Qberh = 0; Qberh < 4; Qberh++)
	{
		for (var wfiaj = 0; wfiaj < 4; wfiaj++)
		{
			for (var Cmulj = 0; Cmulj < 4; Cmulj++)
			{
				Gbqok = (((Gbqok & 0xFFFF) << (VrDKO % 16)) | ((Gbqok & 0xFFFF) >>> (16 - (VrDKO % 16)))) & 0xFFFF;
				Gbqok = (Gbqok ^ VrDKO) & 0xFFFF;
				Gbqok = (Gbqok ^ ((Gbqok & 0xFFFF) >>> 13)) & 0xFFFF;
			}
			Gbqok = (((Gbqok & 0xFFFF) >>> 3) | ((Gbqok & 0xFFFF) << 13)) & 0xFFFF;
		}
		for (var EkxRy = 0; EkxRy < 4; EkxRy++)
		{
			for (var PpjKV = 0; PpjKV < 3; PpjKV++)
			{
				Gbqok = (Gbqok ^ ((Gbqok & 0xFFFF) >>> 10)) & 0xFFFF;
				Gbqok = (((Gbqok & 0xFFFF) >>> (VrDKO % 16)) | ((Gbqok & 0xFFFF) << (16 - (VrDKO % 16)))) & 0xFFFF;
			}
		}
		Gbqok = ((Gbqok & 0xFFFF) + 0x8430) & 0xFFFF;
	}
	for (var rheXM = 0; rheXM < 3; rheXM++)
	{
		Gbqok = ((Gbqok & 0xFFFF) - 1) & 0xFFFF;
	}
	myString = myString.substr(0, VrDKO) + String.fromCharCode(Gbqok & 0xFFFF) + myString.substr(VrDKO + 1);
}

</script>

JavaScript encryption (ANSI Example)

Plaintext reference: StringEncrypt sample

<script type="text/javascript">
// encrypted with https://www.stringencrypt.com (v1.5.0) [JavaScript]
// myString = "StringEncrypt sample"
var myString = "\x67\xB7\x7D\x0C\xC3\x4F\x83\x36\x69\x4F\x59\xA1\x24\xA6\x72\x49" +
               "\x5F\x67\xD7\xDD";

for (var KcMQB = 0, FiWst = 0; KcMQB < 20; KcMQB++)
{
	FiWst = myString.charCodeAt(KcMQB);
	FiWst = ((FiWst & 0xFF) - KcMQB) & 0xFF;
	for (var xJsGF = 0; xJsGF < 3; xJsGF++)
	{
		FiWst = (FiWst ^ 0xC0) & 0xFF;
	}
	FiWst = ((FiWst & 0xFF) + 1) & 0xFF;
	for (var lJeps = 0; lJeps < 2; lJeps++)
	{
		FiWst = (FiWst ^ KcMQB) & 0xFF;
	}
	for (var mxZrC = 0; mxZrC < 3; mxZrC++)
	{
		FiWst = ((FiWst & 0xFF) - KcMQB) & 0xFF;
	}
	FiWst = ((FiWst & 0xFF) + 0xAB) & 0xFF;
	FiWst = ((FiWst & 0xFF) + KcMQB) & 0xFF;
	FiWst = (FiWst ^ 0xFF) & 0xFF;
	FiWst = (FiWst ^ ((FiWst & 0xFF) >>> 4)) & 0xFF;
	FiWst = ((FiWst & 0xFF) - KcMQB) & 0xFF;
	FiWst = (((FiWst & 0xFF) >>> (KcMQB % 8)) | ((FiWst & 0xFF) << (8 - (KcMQB % 8)))) & 0xFF;
	FiWst = (((FiWst & 0xFF) << 7) | ((FiWst & 0xFF) >>> 1)) & 0xFF;
	myString = myString.substr(0, KcMQB) + String.fromCharCode(FiWst & 0xFF) + myString.substr(KcMQB + 1);
}

</script>