pelock-stringencrypt 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,2362 @@
1
+ # StringEncrypt — String & File Encryption for Ruby Developers
2
+
3
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
4
+
5
+
6
+ [StringEncrypt](https://www.stringencrypt.com) allows you to **encrypt strings and files** using a randomly generated algorithm, generating a unique decryption code (so-called [polymorphic code](https://www.pelock.com/articles/polymorphic-encryption-algorithms)) each time in the selected programming language.
7
+
8
+ ## Available editions
9
+
10
+ StringEncrypt can be used:
11
+
12
+ * Directly on its website - https://www.stringencrypt.com/
13
+ * You can download standalone Windows client - https://www.stringencrypt.com/download/
14
+ * You can use it via WebAPI interface https://www.stringencrypt.com/api/
15
+ * Visual Studio Code extension - https://marketplace.visualstudio.com/items?itemName=PELock.stringencrypt
16
+ * VS Code based editors (like Cursor etc.) - https://open-vsx.org/extension/PELock/stringencrypt
17
+
18
+ ## Plain text PHP string
19
+
20
+ ```php
21
+ // $secret = "PHP string encryption"
22
+ ```
23
+
24
+ ## Encrypted string in PHP source code format
25
+
26
+ ```php
27
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [PHP]
28
+ // Encoding: Windows-1250 or match your source file
29
+ // $secret = "PHP string encryption"
30
+ $secret = [ 0x8E, 0x40, 0x56, 0xAE, 0x7A, 0x0B, 0x1D, 0x51,
31
+ 0x5D, 0x63, 0x13, 0xDA, 0x6E, 0x3F, 0xDB, 0x5E,
32
+ 0xB9, 0x79, 0x1F, 0xA6, 0x17 ];
33
+
34
+ $DGEPd = 0;
35
+ for ($PBbql = 0; $PBbql < 21; $PBbql++)
36
+ {
37
+ $DGEPd = $secret[$PBbql];
38
+ for ($pNjYM = 0; $pNjYM < 4; $pNjYM++)
39
+ {
40
+ $DGEPd = ($DGEPd ^ 0x3D) & 0xFF;
41
+ $DGEPd = (((~($DGEPd & 0xFF)) & 0xFF) + 1) & 0xFF;
42
+ }
43
+ $DGEPd = ($DGEPd ^ 0xB6) & 0xFF;
44
+ $DGEPd = ($DGEPd ^ $PBbql) & 0xFF;
45
+ for ($XnxLS = 0; $XnxLS < 2; $XnxLS++)
46
+ {
47
+ for ($qoZCp = 0; $qoZCp < 4; $qoZCp++)
48
+ {
49
+ $DGEPd = ((($DGEPd & 0xFF) >> 7) | (($DGEPd & 0xFF) << 1)) & 0xFF;
50
+ }
51
+ for ($CsgJZ = 0; $CsgJZ < 4; $CsgJZ++)
52
+ {
53
+ for ($VwNLz = 0; $VwNLz < 3; $VwNLz++)
54
+ {
55
+ $DGEPd = ($DGEPd ^ ((($DGEPd & 0xFF) << 4) & 0xFF)) & 0xFF;
56
+ $DGEPd = ((($DGEPd & 0xFF) >> 4) | (($DGEPd & 0xFF) << 4)) & 0xFF;
57
+ }
58
+ $DGEPd = (($DGEPd & 0xFF) + 1) & 0xFF;
59
+ }
60
+ }
61
+ $DGEPd = (($DGEPd & 0xFF) + 0xD0) & 0xFF;
62
+ $DGEPd = ((($DGEPd & 0xFF) >> 4) | (($DGEPd & 0xFF) << 4)) & 0xFF;
63
+ for ($cUyMk = 0; $cUyMk < 3; $cUyMk++)
64
+ {
65
+ $DGEPd = (($DGEPd & 0xFF) + 1) & 0xFF;
66
+ $DGEPd = ((($DGEPd & 0xFF) << ($PBbql % 8)) | (($DGEPd & 0xFF) >> (8 - ($PBbql % 8)))) & 0xFF;
67
+ }
68
+ for ($UmJxX = 0; $UmJxX < 2; $UmJxX++)
69
+ {
70
+ for ($RGWvx = 0; $RGWvx < 4; $RGWvx++)
71
+ {
72
+ for ($xNBhy = 0; $xNBhy < 4; $xNBhy++)
73
+ {
74
+ $DGEPd = (($DGEPd & 0xFF) - 0x27) & 0xFF;
75
+ }
76
+ }
77
+ }
78
+ $DGEPd = (($DGEPd & 0xFF) + 1) & 0xFF;
79
+ for ($lJFgB = 0; $lJFgB < 3; $lJFgB++)
80
+ {
81
+ $DGEPd = ($DGEPd ^ $PBbql) & 0xFF;
82
+ $DGEPd = ((($DGEPd & 0xFF) << ($PBbql % 8)) | (($DGEPd & 0xFF) >> (8 - ($PBbql % 8)))) & 0xFF;
83
+ for ($nGAaX = 0; $nGAaX < 2; $nGAaX++)
84
+ {
85
+ for ($RMrYp = 0; $RMrYp < 4; $RMrYp++)
86
+ {
87
+ $DGEPd = ($DGEPd ^ 0xFF) & 0xFF;
88
+ }
89
+ for ($pUZjW = 0; $pUZjW < 4; $pUZjW++)
90
+ {
91
+ $DGEPd = (($DGEPd & 0xFF) - $PBbql) & 0xFF;
92
+ }
93
+ $DGEPd = ($DGEPd ^ (($DGEPd & 0xFF) >> 6)) & 0xFF;
94
+ }
95
+ }
96
+ $DGEPd = ($DGEPd ^ 0x27) & 0xFF;
97
+ for ($QHPSD = 0; $QHPSD < 3; $QHPSD++)
98
+ {
99
+ $DGEPd = (($DGEPd & 0xFF) + 0x6C) & 0xFF;
100
+ }
101
+ for ($PquxI = 0; $PquxI < 4; $PquxI++)
102
+ {
103
+ $DGEPd = (($DGEPd & 0xFF) - 1) & 0xFF;
104
+ for ($yCWuE = 0; $yCWuE < 2; $yCWuE++)
105
+ {
106
+ $DGEPd = (($DGEPd & 0xFF) - 0xAF) & 0xFF;
107
+ for ($DFgxE = 0; $DFgxE < 4; $DFgxE++)
108
+ {
109
+ $DGEPd = (($DGEPd & 0xFF) + 0x1D) & 0xFF;
110
+ $DGEPd = ($DGEPd ^ 0xFF) & 0xFF;
111
+ }
112
+ $DGEPd = (($DGEPd & 0xFF) + 1) & 0xFF;
113
+ }
114
+ for ($uadXk = 0; $uadXk < 4; $uadXk++)
115
+ {
116
+ $DGEPd = ($DGEPd ^ $PBbql) & 0xFF;
117
+ }
118
+ }
119
+ $secret[$PBbql] = $DGEPd;
120
+ }
121
+
122
+ $secret = implode('', array_map(function ($c) { return chr($c & 0xFF); }, $secret));
123
+
124
+
125
+ echo secret;
126
+ ```
127
+
128
+ ## The problem with plain text strings
129
+
130
+ I'm a developer, and I love programming. I'm also an avid [reverse engineer](https://www.pelock.com/services). I perform a wide array of software analysis in my daily work and sometimes I find things in compiled applications that **shouldn't be exposed** to the first person with a simple hex-editor in hand.
131
+
132
+ ### What can be found in application binaries?
133
+
134
+ Everything! I've listed a few examples of the things I found below. Sometimes these things shouldn't even be included in applications at all (they are there due to poor design choices or rushed work), but some are just cannot be avoided.
135
+
136
+ * API keys
137
+ * Database passwords
138
+ * FTP passwords
139
+ * Login credentials
140
+ * Encryption & decryption keys
141
+ * Custom code scripts in readable text
142
+ * Complex SQL queries in plain text
143
+ * Hidden website endpoints
144
+ * BitCoin wallets locations
145
+ * ...and many more
146
+
147
+ Ask yourself, did you ever put some sensitive content in your software that you later regret?
148
+
149
+ ### Why should I care?
150
+
151
+ If any of these things were to fall into the **wrong hands**, they could be used to compromise your software or your infrastructure.
152
+
153
+ ![You don't want this to happen to your software.](https://www.pelock.com/img/en/products/string-encrypt/database-password-plain-text.png)
154
+
155
+ Take for example database passwords. A competitor could use them to view your database structure or dump all of its contents. You don't want to lose all your hard work because someone with a simple hex-editor can discover your password in plain text.
156
+
157
+ ## The solution — String Encrypt
158
+
159
+ I've decided to create a simple service called String Encrypt for developers, offering fast string & file encryption without the need to write custom encryption tools over and over again because I did that many times.
160
+
161
+ String Encrypt can help you hide the things that shouldn't be visible at first glance to anyone with a hex-editor.
162
+
163
+ ![StringEncrypt main window](https://www.stringencrypt.com/images/stringencrypt.png)
164
+
165
+ ### Say hello to polymorphic encryption!
166
+
167
+ Forget about simple `xor` encryption! StringEncrypt comes with a unique encryption engine.
168
+
169
+ It's a **polymorphic encryption engine**, similar to the encryption methods used by the software protection solutions and advanced computer viruses.
170
+
171
+ ### How it works?
172
+
173
+ Let me explain how the polymorphic encryption process works.
174
+
175
+ 1. A random set of encryption commands is selected (`xor`, `addition`, `subtraction`, `bit rotations`, `bit shifts`, `logical negation` etc.).
176
+ 2. A random set of helper `encryption keys` is generated.
177
+ 3. Every byte of the input string is encrypted with every encryption command in the random set.
178
+ 4. Nested encryption loops are constructed
179
+ 5. The decryption code in the selected programming language is generated with a reverse set of encryption commands.
180
+
181
+ You can learn more about polymorphic engines from my articles and projects:
182
+
183
+ * How to build a polymorphic engine in C++ - https://www.pelock.com/articles/polymorphic-encryption-algorithms
184
+ * Polymorphic engine in 32-bit MASM assembler - https://github.com/PELock/Simple-Polymorphic-Engine-SPE32
185
+ * Poly Polymorphic Engine - https://www.pelock.com/products/poly-polymorphic-engine
186
+
187
+ ### What does it mean?
188
+
189
+ The encrypted content is **different** every time you apply StringEncrypt encryption to it.
190
+
191
+ The algorithm is always **unique**, the encryption keys are always **randomly selected** and the decryption code is also **unique** for every time you use our encryption.
192
+
193
+ ## StringEncrypt features
194
+
195
+ * Out of box support for `UNICODE` (WideChar type in `C/C++` languages), `UTF-8` (multibyte) & `ANSI` (single byte) strings encodings
196
+ * Configurable minimum & maximum number of encryption commands
197
+ * Different ways to store the encrypted string (as a `global` or `local` variable if the selected programming language supports it)
198
+ * Wide array of supported programming languages
199
+ * You can automate the encryption process in your builds using our `WebAPI` interface (`PHP` and `Python` bindings)
200
+
201
+ ## How to use StringEncrypt from Ruby code?
202
+
203
+ The preferred way to install the Web API SDK is via RubyGems.
204
+
205
+ ```bash
206
+ gem install pelock-stringencrypt
207
+ ```
208
+
209
+ ```ruby
210
+ require "stringencrypt"
211
+ ```
212
+
213
+ The gem is published at https://rubygems.org/gems/pelock-stringencrypt
214
+
215
+ ## Usage examples
216
+
217
+ ### Example — `encrypt_simple.rb`
218
+
219
+ ```ruby
220
+ # frozen_string_literal: true
221
+
222
+ ###############################################################################
223
+ #
224
+ # StringEncrypt — encrypt a string
225
+ #
226
+ # Version : v1.0.1
227
+ # Language : Ruby
228
+ # Author : Bartosz Wójcik
229
+ # Web page : https://www.pelock.com
230
+ #
231
+ ###############################################################################
232
+
233
+ $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
234
+ require "stringencrypt"
235
+
236
+ client = StringEncrypt.new("YOUR-API-KEY-HERE")
237
+ result = client.encrypt_string("Hello!", "$label")
238
+
239
+ if result == false
240
+ warn "Cannot connect to the API."
241
+ exit 1
242
+ end
243
+
244
+ if result["error"] != StringEncrypt::ErrorCode::SUCCESS
245
+ warn "API error: #{result["error"]}"
246
+ exit 1
247
+ end
248
+
249
+ puts result["source"]
250
+ ```
251
+
252
+ ### Example — `info.rb`
253
+
254
+ ```ruby
255
+ # frozen_string_literal: true
256
+
257
+ ###############################################################################
258
+ #
259
+ # StringEncrypt — info
260
+ #
261
+ # Version : v1.0.1
262
+ # Language : Ruby
263
+ # Author : Bartosz Wójcik
264
+ # Web page : https://www.pelock.com
265
+ #
266
+ ###############################################################################
267
+
268
+ $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
269
+ require "stringencrypt"
270
+
271
+ client = StringEncrypt.new("YOUR-API-KEY-HERE")
272
+ client.set_command(StringEncrypt::Command::INFO)
273
+ p client.send
274
+ ```
275
+
276
+ ### Example — `is_demo.rb`
277
+
278
+ ```ruby
279
+ # frozen_string_literal: true
280
+
281
+ ###############################################################################
282
+ #
283
+ # StringEncrypt — is_demo
284
+ #
285
+ # Version : v1.0.1
286
+ # Language : Ruby
287
+ # Author : Bartosz Wójcik
288
+ # Web page : https://www.pelock.com
289
+ #
290
+ ###############################################################################
291
+
292
+ $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
293
+ require "stringencrypt"
294
+
295
+ p StringEncrypt.new("YOUR-API-KEY-HERE").is_demo
296
+ ```
297
+
298
+ See the `examples/` directory in this repository for complete samples.
299
+
300
+ ## Supported programming languages
301
+
302
+ StringEncrypt engine supports code generation for the following programming languages:
303
+
304
+ * [C & C++](https://www.stringencrypt.com/c-cpp-encryption/)
305
+ * [C# (C Sharp for .NET)](https://www.stringencrypt.com/c-sharp-encryption/)
306
+ * [Visual Basic .NET (VB.NET)](https://www.stringencrypt.com/visual-basic-net-vb-net-encryption/)
307
+ * [Delphi / Pascal](https://www.stringencrypt.com/delphi-pascal-encryption/)
308
+ * [Java](https://www.stringencrypt.com/java-encryption/)
309
+ * [Kotlin](https://www.stringencrypt.com/kotlin-encryption/)
310
+ * [JavaScript](https://www.stringencrypt.com/javascript-encryption/)
311
+ * [Python](https://www.stringencrypt.com/python-encryption/)
312
+ * [PHP](https://www.stringencrypt.com/php-encryption/)
313
+ * [Ruby](https://www.stringencrypt.com/ruby-encryption/)
314
+ * [Dart](https://www.stringencrypt.com/dart-encryption/)
315
+ * [Go](https://www.stringencrypt.com/go-encryption/)
316
+ * [Rust](https://www.stringencrypt.com/rust-encryption/)
317
+ * [Swift](https://www.stringencrypt.com/swift-encryption/)
318
+ * [Lua](https://www.stringencrypt.com/lua-encryption/)
319
+ * [Objective-C](https://www.stringencrypt.com/objective-c-encryption/)
320
+ * [AutoIt](https://www.stringencrypt.com/autoit-encryption/)
321
+ * [PowerShell](https://www.stringencrypt.com/powershell-encryption/)
322
+ * [Haskell](https://www.stringencrypt.com/haskell-encryption/)
323
+ * [MASM assembler](https://www.stringencrypt.com/masm-encryption/)
324
+ * [FASM assembler](https://www.stringencrypt.com/fasm-encryption/)
325
+ * [NASM assembler](https://www.stringencrypt.com/nasm-encryption/)
326
+
327
+ Some examples of generated source code for supported programming languages (**with display / run example** enabled, matching the full client `include example` option):
328
+
329
+ ### C/C++ encryption (UNICODE example)
330
+
331
+ ```cpp
332
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [C/C++]
333
+ #include <cstdio>
334
+ #include <cwchar>
335
+ // wszLabel = "C/C++ String Encryption"
336
+ wchar_t wszLabel[24];
337
+
338
+ wszLabel[20] = 0xEDD6; wszLabel[22] = 0xA64D; wszLabel[3] = 0x733C; wszLabel[19] = 0x96B6;
339
+ wszLabel[12] = 0xBCA7; wszLabel[6] = 0xDBD5; wszLabel[18] = 0x8D05; wszLabel[1] = 0xD61B;
340
+ wszLabel[9] = 0x16AC; wszLabel[13] = 0xCA4A; wszLabel[16] = 0xAB02; wszLabel[8] = 0xB392;
341
+ wszLabel[21] = 0xE785; wszLabel[10] = 0x18AB; wszLabel[14] = 0x2AF8; wszLabel[23] = 0x7099;
342
+ wszLabel[5] = 0xAF1B; wszLabel[15] = 0xFC72; wszLabel[7] = 0x05AE; wszLabel[0] = 0x9BF3;
343
+ wszLabel[2] = 0x14D8; wszLabel[4] = 0xD30F; wszLabel[11] = 0xEDE7; wszLabel[17] = 0x1158;
344
+
345
+ for (volatile unsigned int iZASt = 0, tmLMB = 0; iZASt < 24; iZASt++)
346
+ {
347
+ tmLMB = wszLabel[iZASt];
348
+ for (unsigned int sfIcm = 0; sfIcm < 2; sfIcm++)
349
+ {
350
+ for (unsigned int MUhVa = 0; MUhVa < 3; MUhVa++)
351
+ {
352
+ tmLMB = (tmLMB ^ (((tmLMB & 0xFFFF) << 15) & 0xFFFF)) & 0xFFFF;
353
+ tmLMB = (((tmLMB & 0xFFFF) << (iZASt % 16)) | ((tmLMB & 0xFFFF) >> (16 - (iZASt % 16)))) & 0xFFFF;
354
+ }
355
+ }
356
+ tmLMB = (tmLMB ^ 0x2BFD) & 0xFFFF;
357
+ tmLMB = (((tmLMB & 0xFFFF) >> 8) | ((tmLMB & 0xFFFF) << 8)) & 0xFFFF;
358
+ for (unsigned int qiTBF = 0; qiTBF < 2; qiTBF++)
359
+ {
360
+ tmLMB = ((tmLMB & 0xFFFF) - iZASt) & 0xFFFF;
361
+ tmLMB = (((tmLMB & 0xFFFF) >> 8) | ((tmLMB & 0xFFFF) << 8)) & 0xFFFF;
362
+ }
363
+ tmLMB = ((tmLMB & 0xFFFF) - 0x51B1) & 0xFFFF;
364
+ tmLMB = (((tmLMB & 0xFFFF) >> 8) | ((tmLMB & 0xFFFF) << 8)) & 0xFFFF;
365
+ tmLMB = ((tmLMB ^ 0xFFFF) & 0xFFFF);
366
+ tmLMB = ((tmLMB & 0xFFFF) + iZASt) & 0xFFFF;
367
+ for (unsigned int HOCjn = 0; HOCjn < 4; HOCjn++)
368
+ {
369
+ tmLMB = (((tmLMB & 0xFFFF) >> 8) | ((tmLMB & 0xFFFF) << 8)) & 0xFFFF;
370
+ tmLMB = ((tmLMB & 0xFFFF) - iZASt) & 0xFFFF;
371
+ for (unsigned int JpQxh = 0; JpQxh < 2; JpQxh++)
372
+ {
373
+ tmLMB = (((tmLMB & 0xFFFF) >> 12) | ((tmLMB & 0xFFFF) << 4)) & 0xFFFF;
374
+ }
375
+ }
376
+ wszLabel[iZASt] = tmLMB;
377
+ }
378
+
379
+ fputws(wszLabel, stdout);
380
+ fputwc(L'\n', stdout);
381
+ ```
382
+
383
+ ### C# Sharp encryption (UNICODE example)
384
+
385
+ ```csharp
386
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [C#]
387
+ // superSecretString = "Easy encryption in C#"
388
+ String superSecretString = "\uA1A2\uE379\uB64C\u7816\u238A\uD7E4\u0CFA\uD465" +
389
+ "\u7CE4\uA305\u2C46\uD27B\u533A\u6F43\u91A5\u3B36" +
390
+ "\u181E\uC1B8\uA827\uC1FC\u9073";
391
+
392
+ for (int ugcqt = 0, TSGdn = 0; ugcqt < 21; ugcqt++)
393
+ {
394
+ TSGdn = superSecretString[ugcqt];
395
+ TSGdn = (((TSGdn & 0xFFFF) << (ugcqt % 16)) | ((TSGdn & 0xFFFF) >> (16 - (ugcqt % 16)))) & 0xFFFF;
396
+ TSGdn = (TSGdn ^ ugcqt) & 0xFFFF;
397
+ for (int IjFDX = 0; IjFDX < 3; IjFDX++)
398
+ {
399
+ for (int scVKQ = 0; scVKQ < 2; scVKQ++)
400
+ {
401
+ TSGdn = (TSGdn ^ (((TSGdn & 0xFFFF) << 9) & 0xFFFF)) & 0xFFFF;
402
+ for (int tKeJi = 0; tKeJi < 4; tKeJi++)
403
+ {
404
+ TSGdn = (((TSGdn & 0xFFFF) << (ugcqt % 16)) | ((TSGdn & 0xFFFF) >> (16 - (ugcqt % 16)))) & 0xFFFF;
405
+ TSGdn = ((TSGdn & 0xFFFF) - 0x7198) & 0xFFFF;
406
+ TSGdn = (TSGdn ^ 0xFFFF) & 0xFFFF;
407
+ }
408
+ TSGdn = (((TSGdn & 0xFFFF) << 6) | ((TSGdn & 0xFFFF) >> 10)) & 0xFFFF;
409
+ }
410
+ TSGdn = ((TSGdn & 0xFFFF) + 1) & 0xFFFF;
411
+ for (int Hmtef = 0; Hmtef < 3; Hmtef++)
412
+ {
413
+ for (int CEwoz = 0; CEwoz < 2; CEwoz++)
414
+ {
415
+ TSGdn = (TSGdn ^ (((TSGdn & 0xFFFF) << 11) & 0xFFFF)) & 0xFFFF;
416
+ }
417
+ }
418
+ }
419
+ for (int OomDf = 0; OomDf < 3; OomDf++)
420
+ {
421
+ for (int WCOqH = 0; WCOqH < 4; WCOqH++)
422
+ {
423
+ TSGdn = (((TSGdn & 0xFFFF) >> 1) | ((TSGdn & 0xFFFF) << 15)) & 0xFFFF;
424
+ }
425
+ for (int ikutC = 0; ikutC < 2; ikutC++)
426
+ {
427
+ for (int HJjpq = 0; HJjpq < 2; HJjpq++)
428
+ {
429
+ TSGdn = (TSGdn ^ 0x5539) & 0xFFFF;
430
+ }
431
+ for (int FKCPT = 0; FKCPT < 3; FKCPT++)
432
+ {
433
+ TSGdn = (TSGdn ^ 0xFFFF) & 0xFFFF;
434
+ TSGdn = ((TSGdn & 0xFFFF) + 0xC1C1) & 0xFFFF;
435
+ }
436
+ TSGdn = (TSGdn ^ (((TSGdn & 0xFFFF) << 10) & 0xFFFF)) & 0xFFFF;
437
+ }
438
+ }
439
+ TSGdn = ((TSGdn & 0xFFFF) - ugcqt) & 0xFFFF;
440
+ TSGdn = ((TSGdn & 0xFFFF) + 1) & 0xFFFF;
441
+ TSGdn = ((TSGdn & 0xFFFF) + 0x6B27) & 0xFFFF;
442
+ for (int knhQm = 0; knhQm < 2; knhQm++)
443
+ {
444
+ for (int dxIem = 0; dxIem < 4; dxIem++)
445
+ {
446
+ for (int LvAum = 0; LvAum < 3; LvAum++)
447
+ {
448
+ TSGdn = (((TSGdn & 0xFFFF) >> 2) | ((TSGdn & 0xFFFF) << 14)) & 0xFFFF;
449
+ TSGdn = (((~(TSGdn & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
450
+ TSGdn = (((TSGdn & 0xFFFF) << (ugcqt % 16)) | ((TSGdn & 0xFFFF) >> (16 - (ugcqt % 16)))) & 0xFFFF;
451
+ }
452
+ }
453
+ TSGdn = ((TSGdn & 0xFFFF) - 1) & 0xFFFF;
454
+ TSGdn = (TSGdn ^ ugcqt) & 0xFFFF;
455
+ }
456
+ TSGdn = (TSGdn ^ 0xEDF3) & 0xFFFF;
457
+ TSGdn = (((TSGdn & 0xFFFF) >> (ugcqt % 16)) | ((TSGdn & 0xFFFF) << (16 - (ugcqt % 16)))) & 0xFFFF;
458
+ TSGdn = (((~(TSGdn & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
459
+ for (int tJDYH = 0; tJDYH < 2; tJDYH++)
460
+ {
461
+ for (int jqFXP = 0; jqFXP < 4; jqFXP++)
462
+ {
463
+ TSGdn = (((TSGdn & 0xFFFF) >> (ugcqt % 16)) | ((TSGdn & 0xFFFF) << (16 - (ugcqt % 16)))) & 0xFFFF;
464
+ TSGdn = (((TSGdn & 0xFFFF) << 3) | ((TSGdn & 0xFFFF) >> 13)) & 0xFFFF;
465
+ TSGdn = ((TSGdn & 0xFFFF) - 0x4E43) & 0xFFFF;
466
+ }
467
+ }
468
+ superSecretString = superSecretString.Substring(0, ugcqt) + (char)(TSGdn & 0xFFFF) + superSecretString.Substring(ugcqt + 1);
469
+ }
470
+
471
+ MessageBox.Show(superSecretString);
472
+ ```
473
+
474
+ ### Visual Basic .NET encryption (UNICODE example)
475
+
476
+ ```vbnet
477
+ ' encrypted with https://www.stringencrypt.com (v1.5.0) [Visual Basic .NET]
478
+ ' vbSecret = "Option Strict On in VB.NET"
479
+ Dim HudbE() As Integer = { &H6606, &H39FF, &H14BC, &HFFD1, &HF714, &HF242, &H6EBC, &H2E90,
480
+ &H2E4B, &H8DF2, &H9DD0, &H85C4, &HC1C3, &H37DD, &HD0D9, &H1C50,
481
+ &H3716, &H372F, &H13AC, &HF731, &HF5EC, &HF172, &H6F64, &H2F1B,
482
+ &HEE8D, &HAE75 }
483
+ Dim vbSecret As String
484
+ Dim XidVf As Integer
485
+ Dim oqtRy As Integer
486
+ Dim SKjiG As Integer
487
+ Dim QhyUd As Integer
488
+ Dim YHFWS As Integer
489
+ Dim EVNCa As Integer
490
+
491
+ Dim eRLNZ As Integer
492
+ For eRLNZ = 0 To 25
493
+ XidVf = HudbE(eRLNZ)
494
+ XidVf = (XidVf Xor eRLNZ) And &HFFFF
495
+ XidVf = ((XidVf And &HFFFF) + 1) And &HFFFF
496
+ For oqtRy = 0 To 1
497
+ For SKjiG = 0 To 3
498
+ XidVf = ((XidVf And &HFFFF) - eRLNZ) And &HFFFF
499
+ Next
500
+ XidVf = ((XidVf And &HFFFF) - &HF6B4) And &HFFFF
501
+ Next
502
+ XidVf = ((XidVf And &HFFFF) + 1) And &HFFFF
503
+ XidVf = (((XidVf And &HFFFF) << (eRLNZ Mod 16)) Or ((XidVf And &HFFFF) >> (16 - (eRLNZ Mod 16)))) And &HFFFF
504
+ For QhyUd = 0 To 3
505
+ For YHFWS = 0 To 2
506
+ XidVf = ((XidVf And &HFFFF) - 1) And &HFFFF
507
+ Next
508
+ XidVf = ((XidVf And &HFFFF) - &H4A45) And &HFFFF
509
+ XidVf = (XidVf Xor eRLNZ) And &HFFFF
510
+ Next
511
+ XidVf = (((XidVf And &HFFFF) >> 8) Or ((XidVf And &HFFFF) << 8)) And &HFFFF
512
+ XidVf = (XidVf Xor (((XidVf And &HFFFF) << 15) And &HFFFF)) And &HFFFF
513
+ For EVNCa = 0 To 3
514
+ XidVf = (XidVf Xor eRLNZ) And &HFFFF
515
+ XidVf = (((XidVf And &HFFFF) >> 8) Or ((XidVf And &HFFFF) << 8)) And &HFFFF
516
+ Next
517
+ vbSecret = vbSecret + ChrW(XidVf And &HFFFF)
518
+ Next eRLNZ
519
+
520
+ MessageBox.Show(vbSecret)
521
+ ```
522
+
523
+ ### Delphi & Pascal encryption (UNICODE example)
524
+
525
+ ```delphi
526
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Delphi / Pascal]
527
+ var
528
+ // mySecret = "Delphi is awesome!"
529
+ mySecret: array[0..19] of WideChar;
530
+ HFisk: Integer;
531
+ ZnzLM: Integer;
532
+ XMlUh: Integer;
533
+ pSdQr: Integer;
534
+ clrza: Integer;
535
+ GPvNR: Integer;
536
+ lFOKB: Integer;
537
+
538
+ begin
539
+
540
+ mySecret[6] := WideChar($EF77); mySecret[15] := WideChar($766A);
541
+ mySecret[5] := WideChar($4E77); mySecret[1] := WideChar($F277);
542
+ mySecret[2] := WideChar($3B77); mySecret[17] := WideChar($FE72);
543
+ mySecret[14] := WideChar($7268); mySecret[9] := WideChar($9362);
544
+ mySecret[0] := WideChar($EB77); mySecret[3] := WideChar($4B77);
545
+ mySecret[13] := WideChar($E06A); mySecret[16] := WideChar($0A75);
546
+ mySecret[11] := WideChar($5462); mySecret[4] := WideChar($AF74);
547
+ mySecret[7] := WideChar($2A77); mySecret[10] := WideChar($F060);
548
+ mySecret[8] := WideChar($FA64); mySecret[18] := WideChar($5F70);
549
+ mySecret[12] := WideChar($4464);
550
+
551
+ for lFOKB := 0 to 19 do
552
+ begin
553
+ HFisk := Ord(mySecret[lFOKB]);
554
+ HFisk := (HFisk xor $FFFF) and $FFFF;
555
+ HFisk := (HFisk xor lFOKB) and $FFFF;
556
+ HFisk := ((HFisk and $FFFF) - $0124) and $FFFF;
557
+ HFisk := ((HFisk and $FFFF) - lFOKB) and $FFFF;
558
+ HFisk := (((HFisk and $FFFF) shr 8) or ((HFisk and $FFFF) shl 8)) and $FFFF;
559
+ HFisk := (HFisk xor $168C) and $FFFF;
560
+ HFisk := (((HFisk and $FFFF) shr 8) or ((HFisk and $FFFF) shl 8)) and $FFFF;
561
+ HFisk := (((HFisk and $FFFF) xor $FFFF) + 1) and $FFFF;
562
+ HFisk := (((HFisk and $FFFF) shr 8) or ((HFisk and $FFFF) shl 8)) and $FFFF;
563
+ HFisk := (HFisk xor $FFFF) and $FFFF;
564
+ for ZnzLM := 0 to 3 do
565
+ begin
566
+ HFisk := ((HFisk and $FFFF) + lFOKB) and $FFFF;
567
+ for XMlUh := 0 to 2 do
568
+ begin
569
+ HFisk := (HFisk xor lFOKB) and $FFFF;
570
+ HFisk := ((HFisk and $FFFF) + lFOKB) and $FFFF;
571
+ HFisk := (HFisk xor ((HFisk and $FFFF) shr 10)) and $FFFF;
572
+ end;
573
+ end;
574
+ HFisk := (HFisk xor $71DB) and $FFFF;
575
+ HFisk := (HFisk xor ((HFisk and $FFFF) shr 8)) and $FFFF;
576
+ for pSdQr := 0 to 2 do
577
+ begin
578
+ for clrza := 0 to 2 do
579
+ begin
580
+ HFisk := ((HFisk and $FFFF) - lFOKB) and $FFFF;
581
+ end;
582
+ HFisk := (HFisk xor $FFFF) and $FFFF;
583
+ for GPvNR := 0 to 2 do
584
+ begin
585
+ HFisk := (HFisk xor lFOKB) and $FFFF;
586
+ HFisk := (HFisk xor $FFFF) and $FFFF;
587
+ end;
588
+ end;
589
+ mySecret[lFOKB] := WideChar(HFisk);
590
+ end;
591
+
592
+ ShowMessage(mySecret);
593
+ ```
594
+
595
+ ### Java encryption (UNICODE example)
596
+
597
+ ```java
598
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Java]
599
+ // myJavaPassword = "Very secret password! QWERTY"
600
+ String myJavaPassword = "";
601
+
602
+ int LcnEg[] = { 0x8DEC, 0x1C11, 0x38B7, 0x7266, 0xE77C, 0xD369, 0xA92B, 0x6FC7,
603
+ 0xF70E, 0x331E, 0xEC3C, 0xF379, 0x0CF7, 0x51F2, 0x9BEC, 0x47EA,
604
+ 0x3008, 0xA052, 0x411F, 0x834F, 0x09B7, 0x16F6, 0x36CC, 0x7088,
605
+ 0x1D71, 0x75E2, 0x6445, 0x9E8B };
606
+
607
+ for (int syzDT = 0, ZAfcE = 0; syzDT < 28; syzDT++)
608
+ {
609
+ ZAfcE = LcnEg[syzDT];
610
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> 13) | ((ZAfcE & 0xFFFF) << 3)) & 0xFFFF;
611
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> (syzDT % 16)) | ((ZAfcE & 0xFFFF) << (16 - (syzDT % 16)))) & 0xFFFF;
612
+ ZAfcE = (((~(ZAfcE & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
613
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> 8) | ((ZAfcE & 0xFFFF) << 8)) & 0xFFFF;
614
+ for (int gyKZB = 0; gyKZB < 3; gyKZB++)
615
+ {
616
+ ZAfcE = ((ZAfcE & 0xFFFF) - 0xAE0D) & 0xFFFF;
617
+ }
618
+ ZAfcE = ((ZAfcE & 0xFFFF) + syzDT) & 0xFFFF;
619
+ for (int KnuGq = 0; KnuGq < 4; KnuGq++)
620
+ {
621
+ for (int kbnLT = 0; kbnLT < 4; kbnLT++)
622
+ {
623
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> 8) | ((ZAfcE & 0xFFFF) << 8)) & 0xFFFF;
624
+ }
625
+ ZAfcE = (ZAfcE ^ syzDT) & 0xFFFF;
626
+ }
627
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> 8) | ((ZAfcE & 0xFFFF) << 8)) & 0xFFFF;
628
+ for (int oVJfW = 0; oVJfW < 3; oVJfW++)
629
+ {
630
+ ZAfcE = (ZAfcE ^ 0xC49D) & 0xFFFF;
631
+ for (int LzJBK = 0; LzJBK < 2; LzJBK++)
632
+ {
633
+ ZAfcE = ((ZAfcE & 0xFFFF) - 1) & 0xFFFF;
634
+ }
635
+ }
636
+ for (int JKcZp = 0; JKcZp < 2; JKcZp++)
637
+ {
638
+ ZAfcE = (ZAfcE ^ syzDT) & 0xFFFF;
639
+ for (int kvRTO = 0; kvRTO < 2; kvRTO++)
640
+ {
641
+ for (int uFglb = 0; uFglb < 2; uFglb++)
642
+ {
643
+ ZAfcE = (((ZAfcE & 0xFFFF) << 7) | ((ZAfcE & 0xFFFF) >>> 9)) & 0xFFFF;
644
+ }
645
+ ZAfcE = (ZAfcE ^ 0xFFFF) & 0xFFFF;
646
+ }
647
+ }
648
+ ZAfcE = ((ZAfcE & 0xFFFF) + 0x4453) & 0xFFFF;
649
+ ZAfcE = (((ZAfcE & 0xFFFF) >>> 8) | ((ZAfcE & 0xFFFF) << 8)) & 0xFFFF;
650
+ myJavaPassword = myJavaPassword + (char)(ZAfcE & 0xFFFF);
651
+ }
652
+
653
+ System.out.println(myJavaPassword);
654
+ ```
655
+
656
+ ### Kotlin encryption (UNICODE example)
657
+
658
+ ```kotlin
659
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Kotlin]
660
+ // kotlinSecret = "Kotlin on the JVM"
661
+ var kotlinSecret: String = ""
662
+
663
+ val MapNJ: IntArray = intArrayOf( 0x4B2E, 0x0223, 0xC7ED, 0x4032, 0x96E3, 0x7865, 0x23EB, 0x599C,
664
+ 0xC383, 0x264E, 0x5F09, 0x7EFE, 0xA113, 0xA2A3, 0x00E5, 0x780D,
665
+ 0x8E55 )
666
+
667
+ var Qtqma: Int = 0
668
+ for (LZjJi in 0 until 17)
669
+ {
670
+ Qtqma = MapNJ[LZjJi]
671
+ Qtqma = ((Qtqma and 0xFFFF) + 0xA521) and 0xFFFF
672
+ Qtqma = (Qtqma xor (((Qtqma and 0xFFFF) shl 10) and 0xFFFF)) and 0xFFFF
673
+ for (rZUBD in 0 until 4)
674
+ {
675
+ for (ZXqdA in 0 until 2)
676
+ {
677
+ Qtqma = (((Qtqma and 0xFFFF) shr (LZjJi % 16)) or ((Qtqma and 0xFFFF) shl (16 - (LZjJi % 16)))) and 0xFFFF
678
+ for (vxUnf in 0 until 4)
679
+ {
680
+ Qtqma = ((Qtqma and 0xFFFF) + 0x0CA9) and 0xFFFF
681
+ Qtqma = ((Qtqma and 0xFFFF) - 1) and 0xFFFF
682
+ Qtqma = (((Qtqma and 0xFFFF) xor 0xFFFF) + 1) and 0xFFFF
683
+ }
684
+ }
685
+ for (VawkG in 0 until 3)
686
+ {
687
+ Qtqma = ((Qtqma and 0xFFFF) - LZjJi) and 0xFFFF
688
+ Qtqma = ((Qtqma and 0xFFFF) + 0xC4AF) and 0xFFFF
689
+ for (JnHMU in 0 until 2)
690
+ {
691
+ Qtqma = (((Qtqma and 0xFFFF) shl 11) or ((Qtqma and 0xFFFF) shr 5)) and 0xFFFF
692
+ Qtqma = (((Qtqma and 0xFFFF) shl (LZjJi % 16)) or ((Qtqma and 0xFFFF) shr (16 - (LZjJi % 16)))) and 0xFFFF
693
+ }
694
+ }
695
+ }
696
+ Qtqma = (Qtqma xor 0x1E6F) and 0xFFFF
697
+ Qtqma = (Qtqma xor LZjJi) and 0xFFFF
698
+ Qtqma = (((Qtqma and 0xFFFF) shl (LZjJi % 16)) or ((Qtqma and 0xFFFF) shr (16 - (LZjJi % 16)))) and 0xFFFF
699
+ Qtqma = ((Qtqma and 0xFFFF) - 1) and 0xFFFF
700
+ for (DBMXv in 0 until 4)
701
+ {
702
+ Qtqma = (((Qtqma and 0xFFFF) shr (LZjJi % 16)) or ((Qtqma and 0xFFFF) shl (16 - (LZjJi % 16)))) and 0xFFFF
703
+ for (SvQUI in 0 until 3)
704
+ {
705
+ Qtqma = (Qtqma xor ((Qtqma and 0xFFFF) shr 10)) and 0xFFFF
706
+ }
707
+ Qtqma = ((Qtqma and 0xFFFF) - LZjJi) and 0xFFFF
708
+ }
709
+ for (wIdsO in 0 until 4)
710
+ {
711
+ for (bQekV in 0 until 3)
712
+ {
713
+ for (ybGvH in 0 until 2)
714
+ {
715
+ Qtqma = ((Qtqma and 0xFFFF) - 0xC2FD) and 0xFFFF
716
+ }
717
+ Qtqma = ((Qtqma and 0xFFFF) - 1) and 0xFFFF
718
+ }
719
+ for (FbYSu in 0 until 2)
720
+ {
721
+ Qtqma = (((Qtqma and 0xFFFF) shl 4) or ((Qtqma and 0xFFFF) shr 12)) and 0xFFFF
722
+ for (FlDtI in 0 until 4)
723
+ {
724
+ Qtqma = ((Qtqma and 0xFFFF) + 0xDAE9) and 0xFFFF
725
+ Qtqma = ((Qtqma and 0xFFFF) - 1) and 0xFFFF
726
+ }
727
+ }
728
+ for (MFZJI in 0 until 3)
729
+ {
730
+ Qtqma = (Qtqma xor 0x4B9F) and 0xFFFF
731
+ }
732
+ }
733
+ for (aIwem in 0 until 2)
734
+ {
735
+ Qtqma = ((Qtqma and 0xFFFF) - 1) and 0xFFFF
736
+ Qtqma = (Qtqma xor LZjJi) and 0xFFFF
737
+ Qtqma = ((Qtqma and 0xFFFF) - LZjJi) and 0xFFFF
738
+ }
739
+ for (zEwAM in 0 until 4)
740
+ {
741
+ Qtqma = (((Qtqma and 0xFFFF) shr 1) or ((Qtqma and 0xFFFF) shl 15)) and 0xFFFF
742
+ }
743
+ for (ygZUD in 0 until 2)
744
+ {
745
+ for (jgfsh in 0 until 2)
746
+ {
747
+ for (bwAuM in 0 until 3)
748
+ {
749
+ Qtqma = ((Qtqma and 0xFFFF) - LZjJi) and 0xFFFF
750
+ Qtqma = (Qtqma xor 0xA8C1) and 0xFFFF
751
+ }
752
+ }
753
+ }
754
+ for (SmKCk in 0 until 2)
755
+ {
756
+ Qtqma = ((Qtqma and 0xFFFF) - 0x2E59) and 0xFFFF
757
+ Qtqma = (((Qtqma and 0xFFFF) shr 8) or ((Qtqma and 0xFFFF) shl 8)) and 0xFFFF
758
+ for (nFtXV in 0 until 4)
759
+ {
760
+ Qtqma = ((Qtqma and 0xFFFF) + 0xB7F5) and 0xFFFF
761
+ }
762
+ }
763
+ for (lmKPC in 0 until 4)
764
+ {
765
+ for (xrXVo in 0 until 4)
766
+ {
767
+ Qtqma = (((Qtqma and 0xFFFF) shl (LZjJi % 16)) or ((Qtqma and 0xFFFF) shr (16 - (LZjJi % 16)))) and 0xFFFF
768
+ }
769
+ for (eFaSv in 0 until 2)
770
+ {
771
+ for (zauAC in 0 until 4)
772
+ {
773
+ Qtqma = (((Qtqma and 0xFFFF) xor 0xFFFF) + 1) and 0xFFFF
774
+ }
775
+ for (HOFwY in 0 until 3)
776
+ {
777
+ Qtqma = (Qtqma xor ((Qtqma and 0xFFFF) shr 15)) and 0xFFFF
778
+ Qtqma = (Qtqma xor 0x249B) and 0xFFFF
779
+ Qtqma = (((Qtqma and 0xFFFF) shr 8) or ((Qtqma and 0xFFFF) shl 8)) and 0xFFFF
780
+ }
781
+ Qtqma = (((Qtqma and 0xFFFF) shr (LZjJi % 16)) or ((Qtqma and 0xFFFF) shl (16 - (LZjJi % 16)))) and 0xFFFF
782
+ }
783
+ }
784
+ for (Kheuf in 0 until 3)
785
+ {
786
+ Qtqma = (Qtqma xor LZjJi) and 0xFFFF
787
+ for (cZgxP in 0 until 2)
788
+ {
789
+ Qtqma = (Qtqma xor ((Qtqma and 0xFFFF) shr 12)) and 0xFFFF
790
+ Qtqma = ((Qtqma and 0xFFFF) - LZjJi) and 0xFFFF
791
+ }
792
+ for (UDeIb in 0 until 2)
793
+ {
794
+ Qtqma = (((Qtqma and 0xFFFF) shr (LZjJi % 16)) or ((Qtqma and 0xFFFF) shl (16 - (LZjJi % 16)))) and 0xFFFF
795
+ Qtqma = (Qtqma xor LZjJi) and 0xFFFF
796
+ }
797
+ }
798
+ kotlinSecret += (Qtqma and 0xFFFF).toChar()
799
+ }
800
+
801
+ println(kotlinSecret)
802
+ ```
803
+
804
+ ### JavaScript encryption (ANSI)
805
+
806
+ ```js
807
+ <script type="text/javascript">
808
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [JavaScript]
809
+ // hiddenJavaScriptString = "How to encrypt string in JavaScript? That\'s how!"
810
+ var hiddenJavaScriptString;
811
+
812
+ hiddenJavaScriptString = String.fromCharCode(0x16, 0x1A, 0x4B, 0x5F, 0xA2, 0xB5, 0x72, 0xB7,
813
+ 0x13, 0x17, 0x51, 0x45, 0x31, 0x5B, 0x66, 0xD6,
814
+ 0x78, 0x00, 0xEF, 0x0A, 0xAF, 0x64, 0x35, 0x78,
815
+ 0x93, 0xC7, 0x2F, 0x20, 0x26, 0xAA, 0x8C, 0x84,
816
+ 0x18, 0xF5, 0x49, 0x38, 0x14, 0xB3, 0x1C, 0x20,
817
+ 0x34, 0x81, 0x8A, 0x6B, 0x13, 0xC7, 0x56, 0x81);
818
+
819
+ for (var bSfCi = 0, egLpQ = 0; bSfCi < 48; bSfCi++)
820
+ {
821
+ egLpQ = hiddenJavaScriptString.charCodeAt(bSfCi);
822
+ for (var aQdCH = 0; aQdCH < 3; aQdCH++)
823
+ {
824
+ egLpQ = (((egLpQ & 0xFF) >>> 4) | ((egLpQ & 0xFF) << 4)) & 0xFF;
825
+ }
826
+ egLpQ = (egLpQ ^ ((egLpQ & 0xFF) >>> 4)) & 0xFF;
827
+ for (var EbHLk = 0; EbHLk < 2; EbHLk++)
828
+ {
829
+ egLpQ = ((egLpQ & 0xFF) + 1) & 0xFF;
830
+ egLpQ = (egLpQ ^ bSfCi) & 0xFF;
831
+ }
832
+ for (var jxAbD = 0; jxAbD < 4; jxAbD++)
833
+ {
834
+ for (var bZsUm = 0; bZsUm < 3; bZsUm++)
835
+ {
836
+ egLpQ = (egLpQ ^ (((egLpQ & 0xFF) << 5) & 0xFF)) & 0xFF;
837
+ }
838
+ for (var gHYeD = 0; gHYeD < 4; gHYeD++)
839
+ {
840
+ egLpQ = ((egLpQ & 0xFF) + 0x93) & 0xFF;
841
+ egLpQ = ((egLpQ & 0xFF) - bSfCi) & 0xFF;
842
+ for (var coFQk = 0; coFQk < 2; coFQk++)
843
+ {
844
+ egLpQ = (((egLpQ & 0xFF) >>> (bSfCi % 8)) | ((egLpQ & 0xFF) << (8 - (bSfCi % 8)))) & 0xFF;
845
+ egLpQ = ((egLpQ & 0xFF) + 0xB2) & 0xFF;
846
+ }
847
+ }
848
+ }
849
+ for (var TwAVr = 0; TwAVr < 2; TwAVr++)
850
+ {
851
+ for (var usPxq = 0; usPxq < 4; usPxq++)
852
+ {
853
+ egLpQ = ((egLpQ & 0xFF) - bSfCi) & 0xFF;
854
+ egLpQ = (((~(egLpQ & 0xFF)) & 0xFF) + 1) & 0xFF;
855
+ egLpQ = (egLpQ ^ 0x6A) & 0xFF;
856
+ }
857
+ }
858
+ egLpQ = (((egLpQ & 0xFF) << (bSfCi % 8)) | ((egLpQ & 0xFF) >>> (8 - (bSfCi % 8)))) & 0xFF;
859
+ egLpQ = (egLpQ ^ (((egLpQ & 0xFF) << 6) & 0xFF)) & 0xFF;
860
+ egLpQ = ((egLpQ & 0xFF) - 0x01) & 0xFF;
861
+ egLpQ = (((egLpQ & 0xFF) >>> (bSfCi % 8)) | ((egLpQ & 0xFF) << (8 - (bSfCi % 8)))) & 0xFF;
862
+ for (var CXibH = 0; CXibH < 3; CXibH++)
863
+ {
864
+ for (var vHdOC = 0; vHdOC < 4; vHdOC++)
865
+ {
866
+ egLpQ = ((egLpQ & 0xFF) + 0x20) & 0xFF;
867
+ }
868
+ for (var yvjew = 0; yvjew < 2; yvjew++)
869
+ {
870
+ for (var onYQB = 0; onYQB < 4; onYQB++)
871
+ {
872
+ egLpQ = (egLpQ ^ bSfCi) & 0xFF;
873
+ }
874
+ egLpQ = (((egLpQ & 0xFF) >>> 4) | ((egLpQ & 0xFF) << 4)) & 0xFF;
875
+ egLpQ = (((egLpQ & 0xFF) << (bSfCi % 8)) | ((egLpQ & 0xFF) >>> (8 - (bSfCi % 8)))) & 0xFF;
876
+ }
877
+ }
878
+ for (var KqaIN = 0; KqaIN < 3; KqaIN++)
879
+ {
880
+ egLpQ = ((egLpQ & 0xFF) - 1) & 0xFF;
881
+ egLpQ = (((egLpQ & 0xFF) >>> 4) | ((egLpQ & 0xFF) << 4)) & 0xFF;
882
+ for (var uiNqF = 0; uiNqF < 2; uiNqF++)
883
+ {
884
+ egLpQ = (egLpQ ^ (((egLpQ & 0xFF) << 5) & 0xFF)) & 0xFF;
885
+ for (var kGYAO = 0; kGYAO < 4; kGYAO++)
886
+ {
887
+ egLpQ = (((egLpQ & 0xFF) >>> (bSfCi % 8)) | ((egLpQ & 0xFF) << (8 - (bSfCi % 8)))) & 0xFF;
888
+ egLpQ = ((egLpQ & 0xFF) - 1) & 0xFF;
889
+ egLpQ = (egLpQ ^ 0x1B) & 0xFF;
890
+ }
891
+ for (var oCMrO = 0; oCMrO < 2; oCMrO++)
892
+ {
893
+ egLpQ = (egLpQ ^ (((egLpQ & 0xFF) << 6) & 0xFF)) & 0xFF;
894
+ egLpQ = ((egLpQ & 0xFF) + 1) & 0xFF;
895
+ }
896
+ }
897
+ }
898
+ egLpQ = (((egLpQ & 0xFF) << 6) | ((egLpQ & 0xFF) >>> 2)) & 0xFF;
899
+ for (var kincR = 0; kincR < 2; kincR++)
900
+ {
901
+ egLpQ = ((egLpQ & 0xFF) + 0x0F) & 0xFF;
902
+ egLpQ = ((egLpQ & 0xFF) + bSfCi) & 0xFF;
903
+ egLpQ = (egLpQ ^ ((egLpQ & 0xFF) >>> 5)) & 0xFF;
904
+ }
905
+ for (var ExphN = 0; ExphN < 3; ExphN++)
906
+ {
907
+ egLpQ = (egLpQ ^ (((egLpQ & 0xFF) << 7) & 0xFF)) & 0xFF;
908
+ egLpQ = (((egLpQ & 0xFF) >>> 4) | ((egLpQ & 0xFF) << 4)) & 0xFF;
909
+ egLpQ = ((egLpQ & 0xFF) - 1) & 0xFF;
910
+ }
911
+ hiddenJavaScriptString = hiddenJavaScriptString.substr(0, bSfCi) + String.fromCharCode(egLpQ & 0xFF) + hiddenJavaScriptString.substr(bSfCi + 1);
912
+ }
913
+
914
+ alert(hiddenJavaScriptString);
915
+ </script>
916
+ ```
917
+
918
+ ### Ruby encryption (UNICODE example)
919
+
920
+ ```ruby
921
+ # encrypted with https://www.stringencrypt.com (v1.5.0) [Ruby]
922
+ # ruby = "Ruby on rails"
923
+ ruby = [ 0x441E, 0x69DE, 0xE834, 0x7022, 0x2CEA, 0x5753, 0x7FCC, 0x4F84,
924
+ 0x6E7B, 0xC534, 0x8EF9, 0xA4E7, 0xD30C ]
925
+
926
+ ruby.each_with_index do |qawdj, vdyrt|
927
+ 4.times do
928
+ qawdj = ((qawdj & 0xFFFF) - vdyrt) & 0xFFFF
929
+ qawdj = ((qawdj & 0xFFFF) + 0xD208) & 0xFFFF
930
+ qawdj = (((qawdj & 0xFFFF) >> 3) | ((qawdj & 0xFFFF) << 13)) & 0xFFFF
931
+ end
932
+ qawdj = (((qawdj & 0xFFFF) >> 8) | ((qawdj & 0xFFFF) << 8)) & 0xFFFF
933
+ qawdj = (((qawdj & 0xFFFF) >> 8) | ((qawdj & 0xFFFF) << 8)) & 0xFFFF
934
+ 3.times do
935
+ qawdj = ((qawdj & 0xFFFF) + 0x1812) & 0xFFFF
936
+ qawdj = (((qawdj & 0xFFFF) << 12) | ((qawdj & 0xFFFF) >> 4)) & 0xFFFF
937
+ end
938
+ qawdj = (((qawdj & 0xFFFF) >> (vdyrt % 16)) | ((qawdj & 0xFFFF) << (16 - (vdyrt % 16)))) & 0xFFFF
939
+ qawdj = ((qawdj & 0xFFFF) + vdyrt) & 0xFFFF
940
+ qawdj = (((~(qawdj & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF
941
+ qawdj = (((qawdj & 0xFFFF) << 7) | ((qawdj & 0xFFFF) >> 9)) & 0xFFFF
942
+ qawdj = (qawdj ^ 0xF8E7) & 0xFFFF
943
+ qawdj = (((qawdj & 0xFFFF) >> (vdyrt % 16)) | ((qawdj & 0xFFFF) << (16 - (vdyrt % 16)))) & 0xFFFF
944
+ 3.times do
945
+ qawdj = (((qawdj & 0xFFFF) >> 8) | ((qawdj & 0xFFFF) << 8)) & 0xFFFF
946
+ qawdj = ((qawdj & 0xFFFF) + 0x2B01) & 0xFFFF
947
+ end
948
+ 2.times do
949
+ 4.times do
950
+ 3.times do
951
+ qawdj = (qawdj ^ (((qawdj & 0xFFFF) << 15) & 0xFFFF)) & 0xFFFF
952
+ end
953
+ end
954
+ 2.times do
955
+ qawdj = (((qawdj & 0xFFFF) >> 15) | ((qawdj & 0xFFFF) << 1)) & 0xFFFF
956
+ 4.times do
957
+ qawdj = (qawdj ^ ((qawdj & 0xFFFF) >> 8)) & 0xFFFF
958
+ end
959
+ qawdj = (qawdj ^ (((qawdj & 0xFFFF) << 8) & 0xFFFF)) & 0xFFFF
960
+ end
961
+ end
962
+ 3.times do
963
+ 2.times do
964
+ qawdj = ((qawdj & 0xFFFF) + 0xA961) & 0xFFFF
965
+ 4.times do
966
+ qawdj = (qawdj ^ ((qawdj & 0xFFFF) >> 12)) & 0xFFFF
967
+ qawdj = (((qawdj & 0xFFFF) >> 8) | ((qawdj & 0xFFFF) << 8)) & 0xFFFF
968
+ end
969
+ qawdj = ((qawdj & 0xFFFF) + 0x95E6) & 0xFFFF
970
+ end
971
+ qawdj = (qawdj ^ 0xFFFF) & 0xFFFF
972
+ end
973
+ qawdj = (((qawdj & 0xFFFF) << 11) | ((qawdj & 0xFFFF) >> 5)) & 0xFFFF
974
+ 4.times do
975
+ 2.times do
976
+ qawdj = (((qawdj & 0xFFFF) << (vdyrt % 16)) | ((qawdj & 0xFFFF) >> (16 - (vdyrt % 16)))) & 0xFFFF
977
+ 4.times do
978
+ qawdj = ((qawdj & 0xFFFF) - 1) & 0xFFFF
979
+ end
980
+ end
981
+ qawdj = ((qawdj & 0xFFFF) + 1) & 0xFFFF
982
+ end
983
+ ruby[vdyrt] = qawdj & 0xFFFF
984
+ end
985
+ ruby = ruby.pack('v*').force_encoding('UTF-16LE').encode('UTF-8')
986
+
987
+ puts ruby
988
+ ```
989
+
990
+ ### Python encryption (UNICODE example)
991
+
992
+ ## Plain text Python string encryption
993
+ ```python
994
+ cute_wabbit = "A little girl goes into a pet show and asks for a wabbit... http..."
995
+ ```
996
+
997
+ to:
998
+
999
+ ```python
1000
+ # encrypted with https://www.stringencrypt.com (v1.5.0) [Python]
1001
+ # -*- coding: utf-8 -*-
1002
+ # cute_wabbit = "A little girl goes into a pet show and asks for a wabbit... http..."
1003
+ cute_wabbit = [0xAC75, 0xD6D1, 0xC0F3, 0xCE7E, 0xE4E9, 0x5E85, 0x6E48, 0xB038,
1004
+ 0x9325, 0xD141, 0x2CAE, 0x2680, 0x7E27, 0x6E40, 0x8CDF, 0x9840,
1005
+ 0xBCB0, 0x75A0, 0xAD1A, 0x09AC, 0x9D01, 0x35D2, 0xD712, 0x6F69,
1006
+ 0xA53D, 0x75B8, 0xAE25, 0x266F, 0xEA84, 0xCA81, 0x6855, 0x6BB6,
1007
+ 0x9BE8, 0xC002, 0xA622, 0x709E, 0x9732, 0x48F4, 0x3E73, 0x6AD4,
1008
+ 0x135C, 0xD181, 0x65E9, 0x220A, 0xFE25, 0x9F0D, 0x82B1, 0x0C97,
1009
+ 0x4567, 0xAF11, 0xDC07, 0x98E6, 0x3202, 0x5B80, 0x923C, 0xE3A9,
1010
+ 0x9EF2, 0xF11A, 0xEFA1, 0x70EB, 0x5BCF, 0xC56D, 0x1D7B, 0x638C,
1011
+ 0xE11D, 0x9BD2, 0x513F]
1012
+
1013
+ for qoPms in range(67):
1014
+ jmsGR = cute_wabbit[qoPms]
1015
+ jmsGR = ((jmsGR & 0xFFFF) + 0x97C3) & 0xFFFF
1016
+ jmsGR = (jmsGR ^ ((jmsGR & 0xFFFF) >> 13)) & 0xFFFF
1017
+ for znegy in range(2):
1018
+ jmsGR = (((jmsGR & 0xFFFF) >> (qoPms % 16)) | ((jmsGR & 0xFFFF) << (16 - (qoPms % 16)))) & 0xFFFF
1019
+ for dwJcX in range(3):
1020
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1021
+ jmsGR = (jmsGR ^ 0xFFFF) & 0xFFFF
1022
+ for QpYFt in range(4):
1023
+ jmsGR = (((jmsGR & 0xFFFF) >> (qoPms % 16)) | ((jmsGR & 0xFFFF) << (16 - (qoPms % 16)))) & 0xFFFF
1024
+ jmsGR = (jmsGR ^ 0x6701) & 0xFFFF
1025
+ jmsGR = (((jmsGR & 0xFFFF) >> 5) | ((jmsGR & 0xFFFF) << 11)) & 0xFFFF
1026
+ for TUYrh in range(4):
1027
+ jmsGR = (((jmsGR & 0xFFFF) << (qoPms % 16)) | ((jmsGR & 0xFFFF) >> (16 - (qoPms % 16)))) & 0xFFFF
1028
+ for HdbmR in range(4):
1029
+ jmsGR = ((jmsGR & 0xFFFF) - 1) & 0xFFFF
1030
+ for lrOZq in range(4):
1031
+ jmsGR = (((~(jmsGR & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF
1032
+ for VqmkO in range(2):
1033
+ for ZIsub in range(4):
1034
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1035
+ jmsGR = (((jmsGR & 0xFFFF) << (qoPms % 16)) | ((jmsGR & 0xFFFF) >> (16 - (qoPms % 16)))) & 0xFFFF
1036
+ for XznKW in range(4):
1037
+ jmsGR = (jmsGR ^ qoPms) & 0xFFFF
1038
+ jmsGR = (((jmsGR & 0xFFFF) >> 8) | ((jmsGR & 0xFFFF) << 8)) & 0xFFFF
1039
+ jmsGR = ((jmsGR & 0xFFFF) - 1) & 0xFFFF
1040
+ for AflZi in range(2):
1041
+ for XJsoA in range(4):
1042
+ for bfcXt in range(2):
1043
+ jmsGR = ((jmsGR & 0xFFFF) + qoPms) & 0xFFFF
1044
+ jmsGR = (jmsGR ^ 0x5166) & 0xFFFF
1045
+ jmsGR = ((jmsGR & 0xFFFF) - 1) & 0xFFFF
1046
+ jmsGR = (((jmsGR & 0xFFFF) << 12) | ((jmsGR & 0xFFFF) >> 4)) & 0xFFFF
1047
+ jmsGR = (jmsGR ^ 0x0D9D) & 0xFFFF
1048
+ for iaOnJ in range(3):
1049
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1050
+ jmsGR = (((jmsGR & 0xFFFF) << 9) | ((jmsGR & 0xFFFF) >> 7)) & 0xFFFF
1051
+ for bdijX in range(4):
1052
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1053
+ for QRKMA in range(3):
1054
+ for yOQqG in range(3):
1055
+ jmsGR = (jmsGR ^ qoPms) & 0xFFFF
1056
+ for Rvjzn in range(2):
1057
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1058
+ jmsGR = ((jmsGR & 0xFFFF) + qoPms) & 0xFFFF
1059
+ jmsGR = ((jmsGR & 0xFFFF) - 0xF65D) & 0xFFFF
1060
+ jmsGR = ((jmsGR & 0xFFFF) - 1) & 0xFFFF
1061
+ for euRAN in range(2):
1062
+ jmsGR = (jmsGR ^ 0xFFFF) & 0xFFFF
1063
+ jmsGR = (((jmsGR & 0xFFFF) << 8) | ((jmsGR & 0xFFFF) >> 8)) & 0xFFFF
1064
+ jmsGR = (jmsGR ^ ((jmsGR & 0xFFFF) >> 11)) & 0xFFFF
1065
+ for woETk in range(3):
1066
+ for YJSUn in range(4):
1067
+ jmsGR = ((jmsGR & 0xFFFF) + 1) & 0xFFFF
1068
+ cute_wabbit[qoPms] = jmsGR
1069
+
1070
+ cute_wabbit = ''.join(chr(jmsGR & 0xFFFF) for jmsGR in cute_wabbit)
1071
+
1072
+ del qoPms, jmsGR
1073
+
1074
+ print(cute_wabbit)
1075
+ ```
1076
+
1077
+
1078
+ ### Dart encryption (UNICODE example)
1079
+
1080
+ ```dart
1081
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Dart]
1082
+ // dartSecret = "Dart null-safe strings"
1083
+ String dartSecret = '\u{8BBE}\u{07F5}\u{900D}\u{47C5}\u{6C7D}\u{3986}\u{801A}\u{B154}' +
1084
+ '\u{A013}\u{33CF}\u{5586}\u{B661}\u{329E}\u{343A}\u{AC1D}\u{9752}' +
1085
+ '\u{F397}\u{36CA}\u{258B}\u{4C90}\u{6759}\u{4238}';
1086
+
1087
+ for (int eHdaK = 0, xNhfY = 0; eHdaK < 22; eHdaK++)
1088
+ {
1089
+ xNhfY = (dartSecret.codeUnitAt(eHdaK));
1090
+ for (int UkmTW = 0; UkmTW < 3; UkmTW++)
1091
+ {
1092
+ xNhfY = ((xNhfY & 0xFFFF) + eHdaK) & 0xFFFF;
1093
+ xNhfY = ((xNhfY & 0xFFFF) + 1) & 0xFFFF;
1094
+ }
1095
+ for (int xTQZL = 0; xTQZL < 2; xTQZL++)
1096
+ {
1097
+ xNhfY = (((xNhfY & 0xFFFF) >> (eHdaK % 16)) | ((xNhfY & 0xFFFF) << (16 - (eHdaK % 16)))) & 0xFFFF;
1098
+ xNhfY = ((xNhfY & 0xFFFF) + 0x6486) & 0xFFFF;
1099
+ }
1100
+ for (int TnAxM = 0; TnAxM < 4; TnAxM++)
1101
+ {
1102
+ for (int rnkwZ = 0; rnkwZ < 2; rnkwZ++)
1103
+ {
1104
+ xNhfY = (((xNhfY & 0xFFFF) >> (eHdaK % 16)) | ((xNhfY & 0xFFFF) << (16 - (eHdaK % 16)))) & 0xFFFF;
1105
+ xNhfY = ((xNhfY & 0xFFFF) - eHdaK) & 0xFFFF;
1106
+ }
1107
+ for (int fxhZW = 0; fxhZW < 4; fxhZW++)
1108
+ {
1109
+ xNhfY = (xNhfY ^ 0x92F4) & 0xFFFF;
1110
+ }
1111
+ xNhfY = ((xNhfY & 0xFFFF) - 1) & 0xFFFF;
1112
+ }
1113
+ xNhfY = (xNhfY ^ ((xNhfY & 0xFFFF) >> 10)) & 0xFFFF;
1114
+ for (int nozUF = 0; nozUF < 3; nozUF++)
1115
+ {
1116
+ xNhfY = (((xNhfY & 0xFFFF) << (eHdaK % 16)) | ((xNhfY & 0xFFFF) >> (16 - (eHdaK % 16)))) & 0xFFFF;
1117
+ }
1118
+ xNhfY = (xNhfY ^ 0x7948) & 0xFFFF;
1119
+ for (int gROwa = 0; gROwa < 3; gROwa++)
1120
+ {
1121
+ xNhfY = (((~(xNhfY & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
1122
+ for (int GyLBD = 0; GyLBD < 4; GyLBD++)
1123
+ {
1124
+ for (int xnTDg = 0; xnTDg < 4; xnTDg++)
1125
+ {
1126
+ xNhfY = ((xNhfY & 0xFFFF) + eHdaK) & 0xFFFF;
1127
+ }
1128
+ for (int czReq = 0; czReq < 3; czReq++)
1129
+ {
1130
+ xNhfY = (((~(xNhfY & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
1131
+ xNhfY = (((xNhfY & 0xFFFF) >> 8) | ((xNhfY & 0xFFFF) << 8)) & 0xFFFF;
1132
+ xNhfY = (((~(xNhfY & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
1133
+ }
1134
+ xNhfY = (((xNhfY & 0xFFFF) >> 7) | ((xNhfY & 0xFFFF) << 9)) & 0xFFFF;
1135
+ }
1136
+ }
1137
+ xNhfY = (xNhfY ^ 0x1B95) & 0xFFFF;
1138
+ xNhfY = (xNhfY ^ ((xNhfY & 0xFFFF) >> 10)) & 0xFFFF;
1139
+ for (int JtOdF = 0; JtOdF < 4; JtOdF++)
1140
+ {
1141
+ for (int VYzxK = 0; VYzxK < 4; VYzxK++)
1142
+ {
1143
+ for (int gnUAS = 0; gnUAS < 2; gnUAS++)
1144
+ {
1145
+ xNhfY = ((xNhfY & 0xFFFF) + 0xF25D) & 0xFFFF;
1146
+ xNhfY = (((xNhfY & 0xFFFF) << 5) | ((xNhfY & 0xFFFF) >> 11)) & 0xFFFF;
1147
+ xNhfY = ((xNhfY & 0xFFFF) + eHdaK) & 0xFFFF;
1148
+ }
1149
+ }
1150
+ for (int NFGjY = 0; NFGjY < 2; NFGjY++)
1151
+ {
1152
+ xNhfY = (xNhfY ^ 0xFFFF) & 0xFFFF;
1153
+ for (int mZcBl = 0; mZcBl < 4; mZcBl++)
1154
+ {
1155
+ xNhfY = ((xNhfY & 0xFFFF) + eHdaK) & 0xFFFF;
1156
+ xNhfY = (xNhfY ^ (((xNhfY & 0xFFFF) << 10) & 0xFFFF)) & 0xFFFF;
1157
+ }
1158
+ }
1159
+ }
1160
+ xNhfY = (((xNhfY & 0xFFFF) >> (eHdaK % 16)) | ((xNhfY & 0xFFFF) << (16 - (eHdaK % 16)))) & 0xFFFF;
1161
+ xNhfY = (((~(xNhfY & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
1162
+ // TODO: immutable String; use StringBuffer or runes for production
1163
+ dartSecret = dartSecret.substring(0, eHdaK) + String.fromCharCode(xNhfY & 0xFFFF) + dartSecret.substring(eHdaK + 1);
1164
+ }
1165
+
1166
+ print(dartSecret);
1167
+ ```
1168
+
1169
+ ### Go encryption (UNICODE example)
1170
+
1171
+ ```go
1172
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Go]
1173
+
1174
+ import (
1175
+ "fmt"
1176
+ "unicode/utf16"
1177
+ )
1178
+ // secretGo = "Go string encryption"
1179
+ var IdORV [21]uint16
1180
+
1181
+ IdORV[0] = 0x05BA IdORV[10] = 0xD7DB IdORV[12] = 0x9261 IdORV[7] = 0xF7B2
1182
+ IdORV[3] = 0x353D IdORV[15] = 0x8969 IdORV[20] = 0x4A86 IdORV[6] = 0x25C5
1183
+ IdORV[2] = 0xFB61 IdORV[18] = 0x97E2 IdORV[17] = 0xEBA7 IdORV[16] = 0xDD8D
1184
+ IdORV[19] = 0xE53D IdORV[11] = 0xF7E8 IdORV[13] = 0x2604 IdORV[4] = 0xC896
1185
+ IdORV[1] = 0x318A IdORV[5] = 0xE1D7 IdORV[9] = 0xBF59 IdORV[14] = 0x67B5
1186
+ IdORV[8] = 0x3978
1187
+
1188
+ var cbmGh uint16 = 0
1189
+ for ywkYl := 0; ywkYl < 21; ywkYl++ {
1190
+ cbmGh = uint16(IdORV[ywkYl])
1191
+ cbmGh = ((^(cbmGh & uint16(0xFFFF)) & uint16(0xFFFF)) + uint16(1)) & uint16(0xFFFF)
1192
+ for KzBpw := 0; KzBpw < 4; KzBpw++ {
1193
+ for Vpmdv := 0; Vpmdv < 2; Vpmdv++ {
1194
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1195
+ for RvcuI := 0; RvcuI < 2; RvcuI++ {
1196
+ cbmGh = (cbmGh ^ uint16(0xEBA1)) & uint16(0xFFFF)
1197
+ cbmGh = ((^(cbmGh & uint16(0xFFFF)) & uint16(0xFFFF)) + uint16(1)) & uint16(0xFFFF)
1198
+ }
1199
+ }
1200
+ }
1201
+ for mDHtT := 0; mDHtT < 3; mDHtT++ {
1202
+ cbmGh = (cbmGh ^ uint16(ywkYl)) & uint16(0xFFFF)
1203
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(0xBE3D)) & uint16(0xFFFF)
1204
+ }
1205
+ for OQUSg := 0; OQUSg < 3; OQUSg++ {
1206
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(ywkYl)) & uint16(0xFFFF)
1207
+ for EScqL := 0; EScqL < 2; EScqL++ {
1208
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> 4) | ((cbmGh & uint16(0xFFFF)) << 12)) & uint16(0xFFFF)
1209
+ }
1210
+ cbmGh = (cbmGh ^ uint16(0xFFFF)) & uint16(0xFFFF)
1211
+ }
1212
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) >> uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1213
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> 8) | ((cbmGh & uint16(0xFFFF)) << 8)) & uint16(0xFFFF)
1214
+ for FvKPx := 0; FvKPx < 2; FvKPx++ {
1215
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1216
+ for sPyek := 0; sPyek < 2; sPyek++ {
1217
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << 15) | ((cbmGh & uint16(0xFFFF)) >> 1)) & uint16(0xFFFF)
1218
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1219
+ }
1220
+ for gmqae := 0; gmqae < 4; gmqae++ {
1221
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(0x3DA6)) & uint16(0xFFFF)
1222
+ for SqVjo := 0; SqVjo < 3; SqVjo++ {
1223
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << 1) | ((cbmGh & uint16(0xFFFF)) >> 15)) & uint16(0xFFFF)
1224
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(1)) & uint16(0xFFFF)
1225
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << 8) | ((cbmGh & uint16(0xFFFF)) >> 8)) & uint16(0xFFFF)
1226
+ }
1227
+ }
1228
+ }
1229
+ for zOIyq := 0; zOIyq < 2; zOIyq++ {
1230
+ cbmGh = (cbmGh ^ uint16(ywkYl)) & uint16(0xFFFF)
1231
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(ywkYl)) & uint16(0xFFFF)
1232
+ }
1233
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) >> uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1234
+ cbmGh = (cbmGh ^ ((cbmGh & uint16(0xFFFF)) >> 12)) & uint16(0xFFFF)
1235
+ for Jerya := 0; Jerya < 4; Jerya++ {
1236
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1237
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << 8) | ((cbmGh & uint16(0xFFFF)) >> 8)) & uint16(0xFFFF)
1238
+ for sFYvt := 0; sFYvt < 2; sFYvt++ {
1239
+ for Bpuqo := 0; Bpuqo < 4; Bpuqo++ {
1240
+ cbmGh = ((cbmGh & uint16(0xFFFF)) + uint16(0x63BE)) & uint16(0xFFFF)
1241
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(1)) & uint16(0xFFFF)
1242
+ }
1243
+ cbmGh = ((cbmGh & uint16(0xFFFF)) + uint16(ywkYl)) & uint16(0xFFFF)
1244
+ }
1245
+ }
1246
+ for EsPno := 0; EsPno < 2; EsPno++ {
1247
+ cbmGh = ((cbmGh & uint16(0xFFFF)) + uint16(0x6C88)) & uint16(0xFFFF)
1248
+ for NoeXP := 0; NoeXP < 4; NoeXP++ {
1249
+ cbmGh = ((^(cbmGh & uint16(0xFFFF)) & uint16(0xFFFF)) + uint16(1)) & uint16(0xFFFF)
1250
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> 8) | ((cbmGh & uint16(0xFFFF)) << 8)) & uint16(0xFFFF)
1251
+ cbmGh = (cbmGh ^ (((cbmGh & uint16(0xFFFF)) << 12) & uint16(0xFFFF))) & uint16(0xFFFF)
1252
+ }
1253
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1254
+ }
1255
+ for PTpkN := 0; PTpkN < 4; PTpkN++ {
1256
+ cbmGh = ((cbmGh & uint16(0xFFFF)) + uint16(1)) & uint16(0xFFFF)
1257
+ }
1258
+ for wMPIf := 0; wMPIf < 2; wMPIf++ {
1259
+ cbmGh = (((cbmGh & uint16(0xFFFF)) >> uint(ywkYl % 16)) | ((cbmGh & uint16(0xFFFF)) << uint(16 - (ywkYl % 16)))) & uint16(0xFFFF)
1260
+ cbmGh = (((cbmGh & uint16(0xFFFF)) << 9) | ((cbmGh & uint16(0xFFFF)) >> 7)) & uint16(0xFFFF)
1261
+ for Fqhur := 0; Fqhur < 4; Fqhur++ {
1262
+ cbmGh = ((cbmGh & uint16(0xFFFF)) - uint16(0x132C)) & uint16(0xFFFF)
1263
+ cbmGh = ((cbmGh & uint16(0xFFFF)) + uint16(1)) & uint16(0xFFFF)
1264
+ }
1265
+ }
1266
+ IdORV[ywkYl] = uint16(cbmGh)
1267
+ }
1268
+ secretGo := string(utf16.Decode(IdORV[:]))
1269
+
1270
+ fmt.Println(secretGo)
1271
+ ```
1272
+
1273
+ ### Rust encryption (UNICODE example)
1274
+
1275
+ ```rust
1276
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Rust]
1277
+ // secret = "Rust string encryption"
1278
+ let mut ZaoBk: [u16; 23] = [0u16; 23];
1279
+
1280
+ ZaoBk[7] = 0x1051; ZaoBk[12] = 0xA2E0; ZaoBk[13] = 0x500D; ZaoBk[1] = 0x92D4;
1281
+ ZaoBk[18] = 0xEB9E; ZaoBk[9] = 0x4C0C; ZaoBk[0] = 0x946F; ZaoBk[19] = 0x5D14;
1282
+ ZaoBk[14] = 0x8C80; ZaoBk[22] = 0xCE49; ZaoBk[11] = 0x694D; ZaoBk[5] = 0x83CE;
1283
+ ZaoBk[20] = 0x37A6; ZaoBk[6] = 0xE77D; ZaoBk[4] = 0x5888; ZaoBk[15] = 0x8741;
1284
+ ZaoBk[2] = 0x958E; ZaoBk[17] = 0xE60C; ZaoBk[16] = 0xCEB0; ZaoBk[10] = 0xF880;
1285
+ ZaoBk[3] = 0xF6E5; ZaoBk[8] = 0x81CB; ZaoBk[21] = 0xC00E;
1286
+
1287
+ let mut nqUGQ: u16 = 0;
1288
+ for snfNx in 0..23
1289
+ {
1290
+ nqUGQ = ZaoBk[snfNx];
1291
+ for DRCeJ in 0..3
1292
+ {
1293
+ for VLPwO in 0..2
1294
+ {
1295
+ nqUGQ = (nqUGQ ^ (((nqUGQ & 0xFFFF).wrapping_shl((8u32) & 15)) & 0xFFFF)) & 0xFFFF;
1296
+ nqUGQ = (nqUGQ ^ ((nqUGQ & 0xFFFF).wrapping_shr((14u32) & 15))) & 0xFFFF;
1297
+ for ZbJNQ in 0..3
1298
+ {
1299
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(0xE7FA) & 0xFFFF;
1300
+ }
1301
+ }
1302
+ }
1303
+ for xbozp in 0..4
1304
+ {
1305
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shl((snfNx as u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shr((16u32).wrapping_sub((snfNx as u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1306
+ }
1307
+ for JYDzH in 0..4
1308
+ {
1309
+ for QaNjY in 0..4
1310
+ {
1311
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_sub(1) & 0xFFFF;
1312
+ nqUGQ = (nqUGQ ^ 0xDF4F) & 0xFFFF;
1313
+ }
1314
+ nqUGQ = (nqUGQ ^ ((nqUGQ & 0xFFFF).wrapping_shr((13u32) & 15))) & 0xFFFF;
1315
+ }
1316
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(0xC1D6) & 0xFFFF;
1317
+ for bDPFc in 0..4
1318
+ {
1319
+ nqUGQ = ((nqUGQ ^ 0xFFFF).wrapping_add(1)) & 0xFFFF;
1320
+ }
1321
+ for GuCTV in 0..3
1322
+ {
1323
+ for RNIXt in 0..3
1324
+ {
1325
+ nqUGQ = (nqUGQ ^ (((nqUGQ & 0xFFFF).wrapping_shl((14u32) & 15)) & 0xFFFF)) & 0xFFFF;
1326
+ for ijnWa in 0..4
1327
+ {
1328
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shr((14u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shl((16u32).wrapping_sub((14u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1329
+ nqUGQ = ((nqUGQ ^ 0xFFFF).wrapping_add(1)) & 0xFFFF;
1330
+ nqUGQ = (nqUGQ ^ 0xFFFF) & 0xFFFF;
1331
+ }
1332
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(0xF8AA) & 0xFFFF;
1333
+ }
1334
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_sub(1) & 0xFFFF;
1335
+ }
1336
+ nqUGQ = (nqUGQ ^ 0xFFFF) & 0xFFFF;
1337
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shl((1u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shr((16u32).wrapping_sub((1u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1338
+ for LaUbu in 0..4
1339
+ {
1340
+ for aHhFw in 0..4
1341
+ {
1342
+ for EqgMf in 0..3
1343
+ {
1344
+ nqUGQ = (nqUGQ ^ (snfNx as u16)) & 0xFFFF;
1345
+ }
1346
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shr((snfNx as u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shl((16u32).wrapping_sub((snfNx as u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1347
+ for bYSgs in 0..2
1348
+ {
1349
+ nqUGQ = ((nqUGQ ^ 0xFFFF).wrapping_add(1)) & 0xFFFF;
1350
+ nqUGQ = (nqUGQ ^ 0x0FD8) & 0xFFFF;
1351
+ nqUGQ = (nqUGQ ^ 0xFFFF) & 0xFFFF;
1352
+ }
1353
+ }
1354
+ }
1355
+ for dkTWb in 0..4
1356
+ {
1357
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(1) & 0xFFFF;
1358
+ }
1359
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(0x02F4) & 0xFFFF;
1360
+ for HcirN in 0..2
1361
+ {
1362
+ for zqcmB in 0..4
1363
+ {
1364
+ nqUGQ = (nqUGQ ^ 0xBDF6) & 0xFFFF;
1365
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shl((4u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shr((16u32).wrapping_sub((4u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1366
+ }
1367
+ for zeBCZ in 0..3
1368
+ {
1369
+ nqUGQ = (nqUGQ & 0xFFFF).wrapping_add(0x3DF3) & 0xFFFF;
1370
+ nqUGQ = (nqUGQ ^ 0xFFFF) & 0xFFFF;
1371
+ }
1372
+ for XLSda in 0..2
1373
+ {
1374
+ for oafFd in 0..4
1375
+ {
1376
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shr((snfNx as u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shl((16u32).wrapping_sub((snfNx as u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1377
+ nqUGQ = ((nqUGQ & 0xFFFF).wrapping_shl((9u32) % 16u32) | (nqUGQ & 0xFFFF).wrapping_shr((16u32).wrapping_sub((9u32) % 16u32).wrapping_rem(16u32))) & 0xFFFF;
1378
+ nqUGQ = ((nqUGQ ^ 0xFFFF).wrapping_add(1)) & 0xFFFF;
1379
+ }
1380
+ }
1381
+ }
1382
+ ZaoBk[snfNx] = nqUGQ;
1383
+ }
1384
+ let secret = String::from_utf16_lossy(&ZaoBk[..]);
1385
+
1386
+ println!("{}", secret);
1387
+ ```
1388
+
1389
+ ### Swift encryption (UNICODE example)
1390
+
1391
+ ```swift
1392
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Swift]
1393
+ // swiftSecret = "Swift string encryption"
1394
+ var swiftSecret: String = ""
1395
+
1396
+ var IDqik: [UInt16] = [ 0x3CF5, 0x0432, 0x570D, 0xFF09, 0xE59C, 0xC844, 0xEFBD, 0xF20E,
1397
+ 0x00B3, 0x49E0, 0x5693, 0xB64F, 0xB918, 0xD406, 0xA40A, 0xB2F7,
1398
+ 0x5F21, 0x98EC, 0xAA18, 0x8F12, 0x7169, 0xC144, 0xE12D ]
1399
+
1400
+ var nhbgA: UInt16 = 0
1401
+ for fpLGc in 0..<23
1402
+ {
1403
+ nhbgA = UInt16(IDqik[fpLGc])
1404
+ for _ in 0..<4
1405
+ {
1406
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(1)) & UInt16(0xFFFF)
1407
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(fpLGc)) & UInt16(0xFFFF)
1408
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) << (fpLGc % 16)) | ((nhbgA & UInt16(0xFFFF)) >> (16 - (fpLGc % 16)))) & UInt16(0xFFFF)
1409
+ }
1410
+ nhbgA = (nhbgA ^ UInt16(0xD283)) & UInt16(0xFFFF)
1411
+ nhbgA = (nhbgA ^ UInt16(0xFFFF)) & UInt16(0xFFFF)
1412
+ for _ in 0..<3
1413
+ {
1414
+ nhbgA = (nhbgA ^ UInt16(0x225A)) & UInt16(0xFFFF)
1415
+ }
1416
+ for _ in 0..<4
1417
+ {
1418
+ nhbgA = (nhbgA ^ ((nhbgA & UInt16(0xFFFF)) >> 13)) & UInt16(0xFFFF)
1419
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) >> 6) | ((nhbgA & UInt16(0xFFFF)) << 10)) & UInt16(0xFFFF)
1420
+ for _ in 0..<3
1421
+ {
1422
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(1)) & UInt16(0xFFFF)
1423
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(1)) & UInt16(0xFFFF)
1424
+ }
1425
+ }
1426
+ for _ in 0..<3
1427
+ {
1428
+ nhbgA = (nhbgA ^ ((nhbgA & UInt16(0xFFFF)) >> 9)) & UInt16(0xFFFF)
1429
+ for _ in 0..<2
1430
+ {
1431
+ for _ in 0..<2
1432
+ {
1433
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(fpLGc)) & UInt16(0xFFFF)
1434
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(0xEED7)) & UInt16(0xFFFF)
1435
+ }
1436
+ for _ in 0..<2
1437
+ {
1438
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(fpLGc)) & UInt16(0xFFFF)
1439
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(1)) & UInt16(0xFFFF)
1440
+ }
1441
+ }
1442
+ nhbgA = (nhbgA ^ (((nhbgA & UInt16(0xFFFF)) << 10) & UInt16(0xFFFF))) & UInt16(0xFFFF)
1443
+ }
1444
+ nhbgA = (((~(nhbgA & UInt16(0xFFFF))) & UInt16(0xFFFF)) &+ UInt16(1)) & UInt16(0xFFFF)
1445
+ for _ in 0..<4
1446
+ {
1447
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) >> (fpLGc % 16)) | ((nhbgA & UInt16(0xFFFF)) << (16 - (fpLGc % 16)))) & UInt16(0xFFFF)
1448
+ for _ in 0..<3
1449
+ {
1450
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(1)) & UInt16(0xFFFF)
1451
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) >> 12) | ((nhbgA & UInt16(0xFFFF)) << 4)) & UInt16(0xFFFF)
1452
+ for _ in 0..<4
1453
+ {
1454
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(0x264C)) & UInt16(0xFFFF)
1455
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(0xE417)) & UInt16(0xFFFF)
1456
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(1)) & UInt16(0xFFFF)
1457
+ }
1458
+ }
1459
+ }
1460
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) >> (fpLGc % 16)) | ((nhbgA & UInt16(0xFFFF)) << (16 - (fpLGc % 16)))) & UInt16(0xFFFF)
1461
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(0xA438)) & UInt16(0xFFFF)
1462
+ for _ in 0..<3
1463
+ {
1464
+ for _ in 0..<3
1465
+ {
1466
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(1)) & UInt16(0xFFFF)
1467
+ for _ in 0..<3
1468
+ {
1469
+ nhbgA = (nhbgA ^ UInt16(fpLGc)) & UInt16(0xFFFF)
1470
+ nhbgA = (((~(nhbgA & UInt16(0xFFFF))) & UInt16(0xFFFF)) &+ UInt16(1)) & UInt16(0xFFFF)
1471
+ }
1472
+ for _ in 0..<2
1473
+ {
1474
+ nhbgA = (nhbgA ^ (((nhbgA & UInt16(0xFFFF)) << 13) & UInt16(0xFFFF))) & UInt16(0xFFFF)
1475
+ }
1476
+ }
1477
+ }
1478
+ nhbgA = (nhbgA ^ UInt16(0x5F00)) & UInt16(0xFFFF)
1479
+ for _ in 0..<3
1480
+ {
1481
+ for _ in 0..<4
1482
+ {
1483
+ nhbgA = (nhbgA ^ ((nhbgA & UInt16(0xFFFF)) >> 15)) & UInt16(0xFFFF)
1484
+ for _ in 0..<2
1485
+ {
1486
+ nhbgA = (nhbgA ^ (((nhbgA & UInt16(0xFFFF)) << 10) & UInt16(0xFFFF))) & UInt16(0xFFFF)
1487
+ }
1488
+ for _ in 0..<4
1489
+ {
1490
+ nhbgA = (nhbgA ^ UInt16(fpLGc)) & UInt16(0xFFFF)
1491
+ }
1492
+ }
1493
+ nhbgA = (nhbgA ^ ((nhbgA & UInt16(0xFFFF)) >> 14)) & UInt16(0xFFFF)
1494
+ }
1495
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &+ UInt16(fpLGc)) & UInt16(0xFFFF)
1496
+ for _ in 0..<3
1497
+ {
1498
+ nhbgA = (((nhbgA & UInt16(0xFFFF)) >> 8) | ((nhbgA & UInt16(0xFFFF)) << 8)) & UInt16(0xFFFF)
1499
+ nhbgA = ((nhbgA & UInt16(0xFFFF)) &- UInt16(fpLGc)) & UInt16(0xFFFF)
1500
+ }
1501
+ IDqik[fpLGc] = UInt16(nhbgA)
1502
+ swiftSecret = String(decoding: IDqik, as: UTF16.self)
1503
+ }
1504
+
1505
+ print(swiftSecret)
1506
+ ```
1507
+
1508
+ ### Lua encryption (UNICODE example)
1509
+
1510
+ ```lua
1511
+ -- encrypted with https://www.stringencrypt.com (v1.5.0) [Lua]
1512
+ -- Requires Lua 5.3+ (bitwise operators: &, |, ~, <<, >>)
1513
+ -- Unicode: utf8.char() for BMP code points (string.char only accepts 0..255)
1514
+ -- luaSecret = "Lua string encryption"
1515
+ local luaSecret = { 0x819A, 0x251F, 0x20EF, 0x2473, 0x3770, 0xACE5, 0x57AC, 0x5FB6,
1516
+ 0xA232, 0x7349, 0xBB95, 0x5CC2, 0xE7B1, 0x8AF8, 0xB07D, 0x80B5,
1517
+ 0x005A, 0x4FE4, 0x76DA, 0x8684, 0xCD7D }
1518
+
1519
+ local cBxhf = 0
1520
+ for JuYFm = 0, 21 - 1 do
1521
+ cBxhf = luaSecret[JuYFm + 1]
1522
+ for GweYp = 1, 4 do
1523
+ cBxhf = (cBxhf ~ (((cBxhf & 0xFFFF) << 11) & 0xFFFF)) & 0xFFFF
1524
+ cBxhf = (((cBxhf & 0xFFFF) >> 7) | ((cBxhf & 0xFFFF) << 9)) & 0xFFFF
1525
+ cBxhf = ((cBxhf & 0xFFFF) - 0x08F7) & 0xFFFF
1526
+ end
1527
+ cBxhf = (cBxhf ~ ((cBxhf & 0xFFFF) >> 9)) & 0xFFFF
1528
+ cBxhf = ((((cBxhf & 0xFFFF) >> 8) | ((cBxhf & 0xFFFF) << 8)) & 0xFFFF)
1529
+ for oJScO = 1, 3 do
1530
+ cBxhf = (((cBxhf & 0xFFFF) >> (JuYFm % 16)) | ((cBxhf & 0xFFFF) << (16 - (JuYFm % 16)))) & 0xFFFF
1531
+ for VCOYf = 1, 3 do
1532
+ for Bozka = 1, 4 do
1533
+ cBxhf = (cBxhf ~ JuYFm) & 0xFFFF
1534
+ cBxhf = ((cBxhf & 0xFFFF) + JuYFm) & 0xFFFF
1535
+ end
1536
+ end
1537
+ end
1538
+ cBxhf = (cBxhf ~ 0xDB0C) & 0xFFFF
1539
+ cBxhf = ((cBxhf & 0xFFFF) - 1) & 0xFFFF
1540
+ for OAbZp = 1, 2 do
1541
+ cBxhf = ((cBxhf & 0xFFFF) + 1) & 0xFFFF
1542
+ end
1543
+ for FoYMh = 1, 4 do
1544
+ cBxhf = ((cBxhf ~ 0xFFFF) & 0xFFFF)
1545
+ cBxhf = ((cBxhf & 0xFFFF) + 0x1A96) & 0xFFFF
1546
+ end
1547
+ cBxhf = (((cBxhf & 0xFFFF) >> (JuYFm % 16)) | ((cBxhf & 0xFFFF) << (16 - (JuYFm % 16)))) & 0xFFFF
1548
+ cBxhf = ((cBxhf & 0xFFFF) - JuYFm) & 0xFFFF
1549
+ luaSecret[JuYFm + 1] = cBxhf
1550
+ end
1551
+
1552
+ local SBvyf = {}
1553
+ for SMmeg = 1, #luaSecret do
1554
+ SBvyf[SMmeg] = utf8.char((luaSecret[SMmeg] & 0xFFFF))
1555
+ end
1556
+ luaSecret = table.concat(SBvyf)
1557
+
1558
+
1559
+ print(luaSecret)
1560
+ ```
1561
+
1562
+ ### Objective-C encryption (UNICODE example)
1563
+
1564
+ ```objc
1565
+ // encrypted with https://www.stringencrypt.com (v1.5.0) [Objective-C]
1566
+ // objcSecret = "Objective-C NSString"
1567
+ unsigned short objcSecret[21];
1568
+
1569
+ objcSecret[3] = 0xA888; objcSecret[9] = 0x64FE; objcSecret[4] = 0x0399; objcSecret[8] = 0xC613;
1570
+ objcSecret[5] = 0x5B69; objcSecret[7] = 0xCAD4; objcSecret[1] = 0xDEC0; objcSecret[18] = 0x7213;
1571
+ objcSecret[13] = 0xE767; objcSecret[20] = 0xC9C3; objcSecret[0] = 0x76FD; objcSecret[14] = 0xE1CE;
1572
+ objcSecret[16] = 0x491E; objcSecret[6] = 0x7B59; objcSecret[10] = 0x3FDE; objcSecret[15] = 0xE867;
1573
+ objcSecret[19] = 0xC3F8; objcSecret[2] = 0x6E4A; objcSecret[11] = 0x77EE; objcSecret[17] = 0x0D46;
1574
+ objcSecret[12] = 0xDAE8;
1575
+
1576
+ for (unsigned int pwrWB = 0, ORZzX = 0; pwrWB < 21; pwrWB++)
1577
+ {
1578
+ ORZzX = objcSecret[pwrWB];
1579
+ for (unsigned int LyZQA = 0; LyZQA < 2; LyZQA++)
1580
+ {
1581
+ ORZzX = ((ORZzX & 0xFFFF) + 1) & 0xFFFF;
1582
+ ORZzX = (ORZzX ^ (((ORZzX & 0xFFFF) << 8) & 0xFFFF)) & 0xFFFF;
1583
+ for (unsigned int EodCh = 0; EodCh < 2; EodCh++)
1584
+ {
1585
+ for (unsigned int TkHYN = 0; TkHYN < 3; TkHYN++)
1586
+ {
1587
+ ORZzX = ((ORZzX & 0xFFFF) + 1) & 0xFFFF;
1588
+ ORZzX = (((ORZzX & 0xFFFF) << 1) | ((ORZzX & 0xFFFF) >> 15)) & 0xFFFF;
1589
+ ORZzX = ((ORZzX & 0xFFFF) - pwrWB) & 0xFFFF;
1590
+ }
1591
+ for (unsigned int djneP = 0; djneP < 3; djneP++)
1592
+ {
1593
+ ORZzX = (ORZzX ^ (((ORZzX & 0xFFFF) << 10) & 0xFFFF)) & 0xFFFF;
1594
+ ORZzX = (((ORZzX & 0xFFFF) >> 5) | ((ORZzX & 0xFFFF) << 11)) & 0xFFFF;
1595
+ }
1596
+ }
1597
+ }
1598
+ ORZzX = ((ORZzX & 0xFFFF) + pwrWB) & 0xFFFF;
1599
+ for (unsigned int BfPGc = 0; BfPGc < 4; BfPGc++)
1600
+ {
1601
+ for (unsigned int rbejn = 0; rbejn < 2; rbejn++)
1602
+ {
1603
+ ORZzX = (ORZzX ^ 0xFFFF) & 0xFFFF;
1604
+ ORZzX = (((ORZzX & 0xFFFF) >> 8) | ((ORZzX & 0xFFFF) << 8)) & 0xFFFF;
1605
+ for (unsigned int BWVfH = 0; BWVfH < 3; BWVfH++)
1606
+ {
1607
+ ORZzX = ((ORZzX & 0xFFFF) + 1) & 0xFFFF;
1608
+ ORZzX = (((ORZzX & 0xFFFF) << (pwrWB % 16)) | ((ORZzX & 0xFFFF) >> (16 - (pwrWB % 16)))) & 0xFFFF;
1609
+ }
1610
+ }
1611
+ }
1612
+ ORZzX = ((ORZzX & 0xFFFF) + 0x7CB1) & 0xFFFF;
1613
+ for (unsigned int vMrnS = 0; vMrnS < 4; vMrnS++)
1614
+ {
1615
+ for (unsigned int asvBV = 0; asvBV < 4; asvBV++)
1616
+ {
1617
+ for (unsigned int jsDCX = 0; jsDCX < 2; jsDCX++)
1618
+ {
1619
+ ORZzX = (((ORZzX & 0xFFFF) << (pwrWB % 16)) | ((ORZzX & 0xFFFF) >> (16 - (pwrWB % 16)))) & 0xFFFF;
1620
+ ORZzX = (ORZzX ^ pwrWB) & 0xFFFF;
1621
+ ORZzX = (ORZzX ^ 0xFFFF) & 0xFFFF;
1622
+ }
1623
+ for (unsigned int QceiD = 0; QceiD < 3; QceiD++)
1624
+ {
1625
+ ORZzX = (ORZzX ^ (((ORZzX & 0xFFFF) << 9) & 0xFFFF)) & 0xFFFF;
1626
+ ORZzX = (((ORZzX & 0xFFFF) << 11) | ((ORZzX & 0xFFFF) >> 5)) & 0xFFFF;
1627
+ }
1628
+ }
1629
+ }
1630
+ ORZzX = (((~(ORZzX & 0xFFFF)) & 0xFFFF) + 1) & 0xFFFF;
1631
+ for (unsigned int rzCFJ = 0; rzCFJ < 2; rzCFJ++)
1632
+ {
1633
+ ORZzX = ((ORZzX & 0xFFFF) + 1) & 0xFFFF;
1634
+ ORZzX = (((ORZzX & 0xFFFF) >> (pwrWB % 16)) | ((ORZzX & 0xFFFF) << (16 - (pwrWB % 16)))) & 0xFFFF;
1635
+ }
1636
+ ORZzX = ((ORZzX & 0xFFFF) + 0xD6AC) & 0xFFFF;
1637
+ objcSecret[pwrWB] = ORZzX;
1638
+ }
1639
+
1640
+ NSLog(@"%@", [NSString stringWithUTF16String:(const unichar *)objcSecret]); // TODO: length / encoding
1641
+ ```
1642
+
1643
+ ### AutoIt encryption (UNICODE example)
1644
+
1645
+ ```autoit
1646
+ ; encrypted with https://www.stringencrypt.com (v1.5.0) [AutoIt]
1647
+ #include <Array.au3>
1648
+
1649
+ ; $autoit_obfuscator = "We got it too https://www.pelock.com/products/autoit-obfuscator"
1650
+ Global $autoit_obfuscator[64] = [ 0x2C7A, 0xA37B, 0xCCC5, 0x93A2, 0x1E59, 0xFC37, 0x7A2B, 0x9153, _
1651
+ 0xFADB, 0x040D, 0x5626, 0xB695, 0x31B7, 0x7DE6, 0x44C3, 0x83E5, _
1652
+ 0xF469, 0xDB4C, 0xF667, 0xD360, 0xA82F, 0x3F3B, 0x3F26, 0xEA32, _
1653
+ 0xF43B, 0x3910, 0x7E2D, 0x639F, 0x35CD, 0xBB6B, 0xD1D4, 0xDCCF, _
1654
+ 0x237E, 0xCD82, 0x99FF, 0x84F7, 0x882E, 0xEE4C, 0xFC3F, 0x7F34, _
1655
+ 0x3143, 0x33E2, 0xF130, 0x24A9, 0x26DF, 0xB84E, 0x76DA, 0x95C4, _
1656
+ 0x2CC3, 0x8D11, 0x3A3F, 0x07B1, 0x8686, 0x983C, 0x0708, 0x978E, _
1657
+ 0xBB44, 0xB835, 0xD402, 0x55AF, 0xB7A9, 0x498C, 0x5907, 0x6C78 ]
1658
+
1659
+ Local $uxYFn
1660
+ Local $JjGwl
1661
+ Local $ELsAr
1662
+ Local $zQTqo
1663
+ Local $gmbXt
1664
+ Local $MzeHF
1665
+ Local $EOspd
1666
+ Local $fXqkF
1667
+ Local $PWZqH
1668
+ Local $uEHXM
1669
+ Local $eKQrB
1670
+ Local $lfoFV
1671
+ Local $EydXK
1672
+
1673
+ For $EydXK = 0 to 63
1674
+ $uxYFn = $autoit_obfuscator[$EydXK]
1675
+ For $JjGwl = 0 to 2
1676
+ For $ELsAr = 0 to 3
1677
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) - 0x31EE, 0xFFFF)
1678
+ Next
1679
+ For $zQTqo = 0 to 2
1680
+ For $gmbXt = 0 to 2
1681
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) + $EydXK, 0xFFFF)
1682
+ Next
1683
+ Next
1684
+ For $MzeHF = 0 to 3
1685
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) + 0x9D00, 0xFFFF)
1686
+ For $EOspd = 0 to 1
1687
+ $uxYFn = BitAND(BitXOR(BitAND($uxYFn, 0xFFFF), 0xFFFF) + 1, 0xFFFF)
1688
+ $uxYFn = BitAND(BitOR(BitShift(BitAND($uxYFn, 0xFFFF), 8), BitShift(BitAND($uxYFn, 0xFFFF), -8)), 0xFFFF)
1689
+ Next
1690
+ For $fXqkF = 0 to 2
1691
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) - $EydXK, 0xFFFF)
1692
+ $uxYFn = BitAND(BitOR(BitShift(BitAND($uxYFn, 0xFFFF), 3), BitShift(BitAND($uxYFn, 0xFFFF), -13)), 0xFFFF)
1693
+ Next
1694
+ Next
1695
+ Next
1696
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) - 1, 0xFFFF)
1697
+ For $PWZqH = 0 to 2
1698
+ $uxYFn = BitAND(BitXOR($uxYFn, BitShift(BitAND($uxYFn, 0xFFFF), 13)), 0xFFFF)
1699
+ For $uEHXM = 0 to 3
1700
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) - $EydXK, 0xFFFF)
1701
+ For $eKQrB = 0 to 3
1702
+ $uxYFn = BitAND(BitXOR($uxYFn, BitShift(BitAND($uxYFn, 0xFFFF), 11)), 0xFFFF)
1703
+ Next
1704
+ For $lfoFV = 0 to 3
1705
+ $uxYFn = BitAND(BitXOR($uxYFn, 0xA378), 0xFFFF)
1706
+ $uxYFn = BitAND(BitXOR($uxYFn, BitShift(BitAND($uxYFn, 0xFFFF), 10)), 0xFFFF)
1707
+ Next
1708
+ Next
1709
+ Next
1710
+ $uxYFn = BitAND(BitOR(BitShift(BitAND($uxYFn, 0xFFFF), -9), BitShift(BitAND($uxYFn, 0xFFFF), 7)), 0xFFFF)
1711
+ $uxYFn = BitAND(BitOR(BitShift(BitAND($uxYFn, 0xFFFF), Mod($EydXK, 16)), BitShift(BitAND($uxYFn, 0xFFFF), Mod($EydXK, 16) - 16)), 0xFFFF)
1712
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) + 0xBA6E, 0xFFFF)
1713
+ $uxYFn = BitAND(BitAND($uxYFn, 0xFFFF) + 1, 0xFFFF)
1714
+ $autoit_obfuscator[$EydXK] = ChrW(BitAND($uxYFn, 0xFFFF))
1715
+ Next
1716
+
1717
+ $autoit_obfuscator = _ArrayToString($autoit_obfuscator, "")
1718
+
1719
+ ConsoleWrite($autoit_obfuscator)
1720
+ ```
1721
+
1722
+ ### PowerShell encryption (UNICODE example)
1723
+
1724
+ ```powershell
1725
+ # encrypted with https://www.stringencrypt.com (v1.5.0) [PowerShell]
1726
+ # $Label = "Well, it has some interesting syntax!"
1727
+ [uint16[]] $VmBdz = 0xDAD8, 0x5B96, 0x69A8, 0xE645, 0x103E, 0x2EC6, 0xF952, 0xB9BC,
1728
+ 0x5B7E, 0x5BE4, 0x9351, 0xBA3D, 0x8B87, 0x2602, 0x7B86, 0x7644,
1729
+ 0x1181, 0x9F1A, 0x2B2C, 0x7F19, 0xEE51, 0xFF94, 0x45F4, 0xC9AB,
1730
+ 0x9E16, 0xE741, 0x2EAF, 0x9B92, 0x2A9B, 0xCB47, 0xE5F1, 0x6487,
1731
+ 0x3FF0, 0x45DC, 0x8D7E, 0x16E2, 0x0E6A
1732
+ [string] $Label = ""
1733
+
1734
+ for ($UiSVa = 0; $UiSVa -lt 37; $UiSVa++)
1735
+ {
1736
+ $DVjgE = $VmBdz[$UiSVa]
1737
+ $DVjgE = (($DVjgE -band 0xFFFF) + 1) -band 0xFFFF
1738
+ $DVjgE = ((($DVjgE -band 0xFFFF) -shr 8) -bor (($DVjgE -band 0xFFFF) -shl 8)) -band 0xFFFF
1739
+ $DVjgE = ((($DVjgE -band 0xFFFF) -shl ($UiSVa % 16)) -bor (($DVjgE -band 0xFFFF) -shr (16 - ($UiSVa % 16)))) -band 0xFFFF
1740
+ $DVjgE = ($DVjgE -bxor $UiSVa) -band 0xFFFF
1741
+ $DVjgE = (($DVjgE -band 0xFFFF) - 0xB874) -band 0xFFFF
1742
+ for ($gxBSZ = 0; $gxBSZ -lt 3; $gxBSZ++)
1743
+ {
1744
+ for ($wSFcZ = 0; $wSFcZ -lt 2; $wSFcZ++)
1745
+ {
1746
+ for ($JnYoy = 0; $JnYoy -lt 4; $JnYoy++)
1747
+ {
1748
+ $DVjgE = (($DVjgE -band 0xFFFF) - $UiSVa) -band 0xFFFF
1749
+ $DVjgE = (($DVjgE -band 0xFFFF) - 0xE5E3) -band 0xFFFF
1750
+ $DVjgE = ((($DVjgE -band 0xFFFF) -shr 3) -bor (($DVjgE -band 0xFFFF) -shl 13)) -band 0xFFFF
1751
+ }
1752
+ }
1753
+ for ($FaUdp = 0; $FaUdp -lt 4; $FaUdp++)
1754
+ {
1755
+ $DVjgE = (($DVjgE -band 0xFFFF) - 0xF6F9) -band 0xFFFF
1756
+ for ($nHlOA = 0; $nHlOA -lt 2; $nHlOA++)
1757
+ {
1758
+ $DVjgE = ($DVjgE -bxor $UiSVa) -band 0xFFFF
1759
+ $DVjgE = (($DVjgE -band 0xFFFF) - $UiSVa) -band 0xFFFF
1760
+ $DVjgE = ((($DVjgE -band 0xFFFF) -bxor 0xFFFF) + 1) -band 0xFFFF
1761
+ }
1762
+ }
1763
+ }
1764
+ for ($xMFbR = 0; $xMFbR -lt 3; $xMFbR++)
1765
+ {
1766
+ for ($YjHOl = 0; $YjHOl -lt 2; $YjHOl++)
1767
+ {
1768
+ $DVjgE = (($DVjgE -band 0xFFFF) + $UiSVa) -band 0xFFFF
1769
+ $DVjgE = ((($DVjgE -band 0xFFFF) -bxor 0xFFFF) + 1) -band 0xFFFF
1770
+ }
1771
+ $DVjgE = ((($DVjgE -band 0xFFFF) -shr 3) -bor (($DVjgE -band 0xFFFF) -shl 13)) -band 0xFFFF
1772
+ $DVjgE = (($DVjgE -band 0xFFFF) - 1) -band 0xFFFF
1773
+ }
1774
+ $DVjgE = ((($DVjgE -band 0xFFFF) -shr 7) -bor (($DVjgE -band 0xFFFF) -shl 9)) -band 0xFFFF
1775
+ $DVjgE = ((($DVjgE -band 0xFFFF) -bxor 0xFFFF) + 1) -band 0xFFFF
1776
+ $DVjgE = ($DVjgE -bxor $UiSVa) -band 0xFFFF
1777
+ $Label += [char]($DVjgE -band 0xFFFF)
1778
+ }
1779
+
1780
+ Write-Host $Label
1781
+ ```
1782
+
1783
+ ### Haskell encryption (ANSI example)
1784
+
1785
+ ```haskell
1786
+ -- encrypted with https://www.stringencrypt.com (v1.5.0) [Haskell]
1787
+ module Main where
1788
+
1789
+ import qualified Data.Char
1790
+ import qualified Data.Bits
1791
+
1792
+ main = do
1793
+ putStrLn $ gimmeh
1794
+
1795
+ -- gimmeh = "Monads! I need more Monads!"
1796
+ gimmeh = zipWith f [0..] [ 0x99, 0x68, 0x69, 0x6B, 0x2C, 0xEC, 0x42, 0x43,
1797
+ 0xE1, 0x25, 0xF1, 0x72, 0x63, 0x64, 0x29, 0x75,
1798
+ 0x46, 0x07, 0x09, 0xDE, 0xAC, 0xFB, 0xFC, 0xFE,
1799
+ 0x7E, 0xBE, 0x94 ]
1800
+ where
1801
+ f brtgn yeubg = let xsfdz0 = yeubg
1802
+ xsfdz1 = xsfdz0 - brtgn
1803
+ xsfdz2 = negate xsfdz1
1804
+ xsfdz3 = xsfdz2 + 1
1805
+ xsfdz4 = xsfdz3 - 0x6F
1806
+ xsfdz5 = xsfdz4 `Data.Bits.xor` 0xB7
1807
+ xsfdz6 = negate xsfdz5
1808
+ xsfdz7 = xsfdz6 `Data.Bits.xor` (Data.Bits.shiftL xsfdz6 6 Data.Bits..&. 0xFF)
1809
+ xsfdz8 = Data.Bits.rotateL xsfdz7 4
1810
+ xsfdz9 = xsfdz8 - 1
1811
+ xsfdz10 = xsfdz9 - brtgn
1812
+ xsfdz11 = xsfdz10 - 0xD5
1813
+ in Data.Char.chr (xsfdz11 Data.Bits..&. 0xFF)
1814
+ ```
1815
+
1816
+ ### MASM Assembler 32 bit encryption (UNICODE example)
1817
+
1818
+ ```asm
1819
+ ; encrypted with https://www.stringencrypt.com (v1.5.0) [MASM Assembler (32 bit)]
1820
+
1821
+ ; szMyGoodOldFriend = "I will be always here :)"
1822
+ local szMyGoodOldFriend[25]:word
1823
+
1824
+ lea ecx, szMyGoodOldFriend
1825
+
1826
+ mov word ptr [ecx + 23], 025CEh
1827
+ mov word ptr [ecx + 1], 0275Eh
1828
+ mov word ptr [ecx + 8], 0D085h
1829
+ mov word ptr [ecx + 20], 0EBABh
1830
+ mov word ptr [ecx + 7], 0E321h
1831
+ mov word ptr [ecx + 4], 00B03h
1832
+ mov word ptr [ecx + 18], 00149h
1833
+ mov word ptr [ecx + 19], 0F5C9h
1834
+ mov word ptr [ecx + 13], 03E86h
1835
+ mov word ptr [ecx + 17], 03908h
1836
+ mov word ptr [ecx + 16], 09E1Bh
1837
+ mov word ptr [ecx + 11], 0B6CFh
1838
+ mov word ptr [ecx + 15], 064B2h
1839
+ mov word ptr [ecx + 10], 02C84h
1840
+ mov word ptr [ecx + 0], 09E02h
1841
+ mov word ptr [ecx + 14], 043E8h
1842
+ mov word ptr [ecx + 9], 00925h
1843
+ mov word ptr [ecx + 5], 00323h
1844
+ mov word ptr [ecx + 12], 03D5Fh
1845
+ mov word ptr [ecx + 22], 02B04h
1846
+ mov word ptr [ecx + 24], 06CA4h
1847
+ mov word ptr [ecx + 6], 066B8h
1848
+ mov word ptr [ecx + 2], 0E4FAh
1849
+ mov word ptr [ecx + 21], 00ED1h
1850
+ mov word ptr [ecx + 3], 00549h
1851
+
1852
+ mov eax, 25
1853
+ xor ebx, ebx
1854
+
1855
+ @@:
1856
+ mov dx, word ptr [ecx + ebx]
1857
+ sub edx, 06818h
1858
+ add edx, 0B8AAh
1859
+
1860
+ push eax
1861
+ mov eax, 4
1862
+ PazJT:
1863
+ push eax
1864
+ movzx eax, dx
1865
+ shl eax, 13
1866
+ and ax, 0xFFFF
1867
+ xor dx, ax
1868
+ pop eax
1869
+
1870
+ push eax
1871
+ mov eax, 2
1872
+ OjDVG:
1873
+ not edx
1874
+ xor edx, ebx
1875
+
1876
+ push eax
1877
+ mov eax, 2
1878
+ UjDCE:
1879
+ rol dx, 8
1880
+ push edx
1881
+ mov cl, bl
1882
+ rol word ptr [esp], cl
1883
+ pop edx
1884
+ dec eax
1885
+ jne UjDCE
1886
+ pop eax
1887
+
1888
+ dec eax
1889
+ jne OjDVG
1890
+ pop eax
1891
+
1892
+ dec eax
1893
+ jne PazJT
1894
+ pop eax
1895
+
1896
+
1897
+ push eax
1898
+ mov eax, 2
1899
+ DFjca:
1900
+
1901
+ push eax
1902
+ mov eax, 4
1903
+ mPryd:
1904
+
1905
+ push eax
1906
+ mov eax, 3
1907
+ hgjbG:
1908
+ inc edx
1909
+ push edx
1910
+ mov cl, bl
1911
+ ror word ptr [esp], cl
1912
+ pop edx
1913
+ sub edx, ebx
1914
+ dec eax
1915
+ jne hgjbG
1916
+ pop eax
1917
+
1918
+
1919
+ push eax
1920
+ mov eax, 4
1921
+ VeiyM:
1922
+ dec edx
1923
+ not edx
1924
+ dec eax
1925
+ jne VeiyM
1926
+ pop eax
1927
+
1928
+ neg edx
1929
+ dec eax
1930
+ jne mPryd
1931
+ pop eax
1932
+
1933
+ xor edx, 0A257h
1934
+ push edx
1935
+ mov cl, bl
1936
+ rol word ptr [esp], cl
1937
+ pop edx
1938
+ dec eax
1939
+ jne DFjca
1940
+ pop eax
1941
+
1942
+ sub edx, 0EEDDh
1943
+ inc edx
1944
+
1945
+ push eax
1946
+ mov eax, 2
1947
+ VIHTa:
1948
+ add edx, ebx
1949
+ dec eax
1950
+ jne VIHTa
1951
+ pop eax
1952
+
1953
+ dec edx
1954
+ sub edx, ebx
1955
+ inc edx
1956
+
1957
+ push eax
1958
+ mov eax, 2
1959
+ vRUrO:
1960
+ push edx
1961
+ mov cl, bl
1962
+ ror word ptr [esp], cl
1963
+ pop edx
1964
+ sub edx, ebx
1965
+ neg edx
1966
+ dec eax
1967
+ jne vRUrO
1968
+ pop eax
1969
+
1970
+ push edx
1971
+ mov cl, bl
1972
+ rol word ptr [esp], cl
1973
+ pop edx
1974
+ neg edx
1975
+
1976
+ push eax
1977
+ mov eax, 4
1978
+ ixfpU:
1979
+
1980
+ push eax
1981
+ mov eax, 4
1982
+ EzpCK:
1983
+
1984
+ push eax
1985
+ mov eax, 4
1986
+ LMBqn:
1987
+ sub edx, ebx
1988
+ push eax
1989
+ movzx eax, dx
1990
+ shl eax, 14
1991
+ and ax, 0xFFFF
1992
+ xor dx, ax
1993
+ pop eax
1994
+ not edx
1995
+ dec eax
1996
+ jne LMBqn
1997
+ pop eax
1998
+
1999
+ xor edx, 0140Bh
2000
+ dec eax
2001
+ jne EzpCK
2002
+ pop eax
2003
+
2004
+ dec eax
2005
+ jne ixfpU
2006
+ pop eax
2007
+
2008
+ inc edx
2009
+ mov word ptr [ecx + ebx], dx
2010
+ inc ebx
2011
+ dec eax
2012
+ jne @b
2013
+
2014
+ push 0
2015
+ push ecx
2016
+ push ecx
2017
+ push 0
2018
+ call MessageBoxW
2019
+ ```
2020
+
2021
+ ### FASM Assembler 32 bit (ANSI example)
2022
+
2023
+ ```asm
2024
+ ; encrypted with https://www.stringencrypt.com (v1.5.0) [FASM Assembler (32 bit)]
2025
+
2026
+ ; szFasm = "Hi Tomek Grysztar :)"
2027
+ local szFasm[21]:BYTE
2028
+
2029
+ lea edx, [szFasm]
2030
+
2031
+ mov byte [edx + 17], 0B7h
2032
+ mov byte [edx + 8], 0BBh
2033
+ mov byte [edx + 1], 002h
2034
+ mov byte [edx + 18], 013h
2035
+ mov byte [edx + 6], 0B5h
2036
+ mov byte [edx + 11], 023h
2037
+ mov byte [edx + 20], 067h
2038
+ mov byte [edx + 13], 02Dh
2039
+ mov byte [edx + 4], 00Ch
2040
+ mov byte [edx + 15], 0BDh
2041
+ mov byte [edx + 7], 074h
2042
+ mov byte [edx + 19], 035h
2043
+ mov byte [edx + 0], 04Eh
2044
+ mov byte [edx + 9], 0CEh
2045
+ mov byte [edx + 12], 036h
2046
+ mov byte [edx + 5], 09Ah
2047
+ mov byte [edx + 16], 09Dh
2048
+ mov byte [edx + 3], 0FCh
2049
+ mov byte [edx + 2], 026h
2050
+ mov byte [edx + 10], 08Dh
2051
+ mov byte [edx + 14], 09Fh
2052
+
2053
+ mov ecx, 21
2054
+ sub ebx, ebx
2055
+
2056
+ @@:
2057
+ mov al, byte [edx + ebx]
2058
+ dec eax
2059
+ push eax
2060
+ mov cl, bl
2061
+ ror byte [esp], cl
2062
+ pop eax
2063
+ sub eax, 06Fh
2064
+ not eax
2065
+ rol al, 4
2066
+ inc eax
2067
+ not eax
2068
+ push ecx
2069
+ movzx ecx, al
2070
+ shl ecx, 6
2071
+ and cl, 0xFF
2072
+ xor al, cl
2073
+ pop ecx
2074
+ sub eax, 04Ch
2075
+ dec eax
2076
+ add eax, 040h
2077
+
2078
+ push ecx
2079
+ mov ecx, 3
2080
+ gqOvB:
2081
+ rol al, 4
2082
+ sub eax, ebx
2083
+ dec ecx
2084
+ jne gqOvB
2085
+ pop ecx
2086
+
2087
+ sub eax, 0B5h
2088
+
2089
+ push ecx
2090
+ mov ecx, 2
2091
+ PxTWp:
2092
+
2093
+ push ecx
2094
+ mov ecx, 3
2095
+ ZRKAu:
2096
+ not eax
2097
+ dec ecx
2098
+ jne ZRKAu
2099
+ pop ecx
2100
+
2101
+ sub eax, 007h
2102
+
2103
+ push ecx
2104
+ mov ecx, 2
2105
+ mrsaT:
2106
+ push ecx
2107
+ movzx ecx, al
2108
+ shl ecx, 4
2109
+ and cl, 0xFF
2110
+ xor al, cl
2111
+ pop ecx
2112
+
2113
+ push ecx
2114
+ mov ecx, 4
2115
+ fXqJc:
2116
+ push ecx
2117
+ movzx ecx, al
2118
+ shr ecx, 7
2119
+ xor al, cl
2120
+ pop ecx
2121
+ dec ecx
2122
+ jne fXqJc
2123
+ pop ecx
2124
+
2125
+ dec ecx
2126
+ jne mrsaT
2127
+ pop ecx
2128
+
2129
+ dec ecx
2130
+ jne PxTWp
2131
+ pop ecx
2132
+
2133
+
2134
+ push ecx
2135
+ mov ecx, 2
2136
+ SDvsl:
2137
+ xor eax, 097h
2138
+ dec ecx
2139
+ jne SDvsl
2140
+ pop ecx
2141
+
2142
+ mov byte [edx + ebx], al
2143
+ inc ebx
2144
+ dec ecx
2145
+ jne @b
2146
+
2147
+ push 0
2148
+ push edx
2149
+ push edx
2150
+ push 0
2151
+ call [MessageBoxA]
2152
+ ```
2153
+
2154
+ ### NASM Assembler 32 bit encryption (ANSI example)
2155
+
2156
+ ```nasm
2157
+ ; encrypted with https://www.stringencrypt.com (v1.5.0) [NASM Assembler (32 bit, template)]
2158
+
2159
+ ; szNasm = "NASM 32-bit demo"
2160
+ ; NASM: reserve buffer on stack or BSS (FASM 'local' not available)
2161
+ ; szNasm x 17 BYTE
2162
+
2163
+ lea ecx, [szNasm]
2164
+
2165
+ mov byte [ecx + 8], 0xD2
2166
+ mov byte [ecx + 14], 0x10
2167
+ mov byte [ecx + 4], 0x89
2168
+ mov byte [ecx + 9], 0x42
2169
+ mov byte [ecx + 1], 0xDF
2170
+ mov byte [ecx + 12], 0x6E
2171
+ mov byte [ecx + 15], 0xED
2172
+ mov byte [ecx + 10], 0xEF
2173
+ mov byte [ecx + 13], 0x9B
2174
+ mov byte [ecx + 6], 0x93
2175
+ mov byte [ecx + 0], 0x0E
2176
+ mov byte [ecx + 16], 0x97
2177
+ mov byte [ecx + 5], 0x04
2178
+ mov byte [ecx + 11], 0xE0
2179
+ mov byte [ecx + 3], 0x88
2180
+ mov byte [ecx + 2], 0xAE
2181
+ mov byte [ecx + 7], 0x00
2182
+
2183
+ mov ebx, 17
2184
+ and eax, 0
2185
+
2186
+ Jtcmn:
2187
+ mov dl, byte [ecx + eax]
2188
+
2189
+ push ebx
2190
+ mov ebx, 3
2191
+ kQyhD:
2192
+ push ebx
2193
+ movzx ebx, dl
2194
+ shr ebx, 7
2195
+ xor dl, bl
2196
+ pop ebx
2197
+ dec ebx
2198
+ jne kQyhD
2199
+ pop ebx
2200
+
2201
+ xor edx, 0x59
2202
+ xor edx, eax
2203
+ push ebx
2204
+ movzx ebx, dl
2205
+ shr ebx, 6
2206
+ xor dl, bl
2207
+ pop ebx
2208
+
2209
+ push ebx
2210
+ mov ebx, 3
2211
+ QvoTY:
2212
+ sub edx, 0x0A
2213
+ dec ebx
2214
+ jne QvoTY
2215
+ pop ebx
2216
+
2217
+
2218
+ push ebx
2219
+ mov ebx, 2
2220
+ oWCAQ:
2221
+
2222
+ push ebx
2223
+ mov ebx, 4
2224
+ STBPV:
2225
+
2226
+ push ebx
2227
+ mov ebx, 3
2228
+ fPAhz:
2229
+ push ebx
2230
+ movzx ebx, dl
2231
+ shr ebx, 7
2232
+ xor dl, bl
2233
+ pop ebx
2234
+ rol dl, 4
2235
+ sub edx, 0xC1
2236
+ dec ebx
2237
+ jne fPAhz
2238
+ pop ebx
2239
+
2240
+
2241
+ push ebx
2242
+ mov ebx, 3
2243
+ Vhgax:
2244
+ add edx, eax
2245
+ rol dl, 4
2246
+ add edx, eax
2247
+ dec ebx
2248
+ jne Vhgax
2249
+ pop ebx
2250
+
2251
+ dec ebx
2252
+ jne STBPV
2253
+ pop ebx
2254
+
2255
+ dec ebx
2256
+ jne oWCAQ
2257
+ pop ebx
2258
+
2259
+ mov byte [ecx + eax], dl
2260
+ inc eax
2261
+ dec ebx
2262
+ jne Jtcmn
2263
+
2264
+ push 0
2265
+ push ecx
2266
+ push ecx
2267
+ push 0
2268
+ call [MessageBoxA]
2269
+ ```
2270
+
2271
+ ## Free demo version limitations
2272
+
2273
+ The free demo version comes with some **limitations**.
2274
+
2275
+ | Feature | Demo version | Full version |
2276
+ |---------------------------------------|:----------------:|-------------:|
2277
+ | String encryption | ✅ | ✅ |
2278
+ | File encryption (text or binary file) | ❌ | ✅ |
2279
+ | Nested polymorphic loops | ❌ | ✅ |
2280
+ | Max. label length (characters) | `10` | `64` |
2281
+ | Max. string length (characters) | `10` | `4096` |
2282
+ | Max. file length (bytes) | — | `4 MB` |
2283
+ | Min. number of encryption commands | `3` | `50` |
2284
+ | Max. number of encryption commands | `3` | `50` |
2285
+
2286
+ ## Pricing
2287
+
2288
+ To remove the limitations and support our project and its development, you need to buy an activation code at:
2289
+
2290
+ https://www.stringencrypt.com/buy/
2291
+
2292
+ Each activation code has an assigned number of **usage credits**. You can use the software in full version as many times as you have usage credits on your account balance.
2293
+
2294
+ ## How to get a free activation code?
2295
+
2296
+ You can get a **free activation code** (500 usage credits) if you can advertise StringEncrypt service with a link to the project site https://www.stringencrypt.com/ at:
2297
+
2298
+ * Programming sites & forums
2299
+ * Programming blogs
2300
+ * Technical articles
2301
+ * X or any other social media site
2302
+ * ...or any other website related to programming and development
2303
+
2304
+ Send me all the details at my [contact address](https://www.stringencrypt.com/) and if it's legit - **bam!**, you got yourself a free code :)
2305
+
2306
+ ## Changelog
2307
+
2308
+ ### 2026-04-14
2309
+
2310
+ Encryption engine updated to v1.5.0 with major algorithmic improvements.
2311
+
2312
+ Support for new programming languages added:
2313
+
2314
+ * Kotlin
2315
+ * Dart
2316
+ * Go
2317
+ * Rust
2318
+ * Swift
2319
+ * Lua
2320
+ * PHP
2321
+ * Objective-C
2322
+ * NASM
2323
+
2324
+ #### Nested polymorphic encryption loops (matryoshka-style)
2325
+
2326
+ Available only for paying customers. The decryption loop can now contain randomly generated inner loops (up to 3 levels deep), each with 1–3 encryption commands. This dramatically increases the complexity of the generated polymorphic code, making static analysis significantly harder. Supported in all languages except Haskell. Assembly languages (MASM/FASM/NASM) use push/pop with randomly generated named labels for inner loop nesting.
2327
+
2328
+ Related to the nested loops, the C/C++ loop constructs are now using volatile keyword to prevent compiler loop unrolling, and it makes advanced string extraction tools unusable.
2329
+
2330
+ #### Bugfixes
2331
+
2332
+ * Fixed Python formatting to be compatible with PEP rules.
2333
+ * Fixed Ruby generator by using valid method of storing encrypted unicode characters array.
2334
+ * Fixed AutoIt generator.
2335
+
2336
+ #### 6 new encryption VM instructions:
2337
+
2338
+ * neg — two's complement negation (self-inverse)
2339
+ * swap — nibble swap for 8-bit / byte swap for 16-bit values (self-inverse)
2340
+ * c_rol / c_ror — counter-dependent bit rotation, shift amount varies per character making frequency analysis nearly impossible
2341
+ * xor_shr / xor_shl — hash-like self-XOR mixing functions inspired by algorithms such as MurmurHash and SplitMix (self-inverse)
2342
+
2343
+ The total number of encryption VM instructions is now 17 (up from 11), providing a vastly larger space of possible encryption combinations.
2344
+
2345
+ #### New syntax highlighting
2346
+
2347
+ Legacy Syntax Highlighter library was replaced with modern Prism highlighter.
2348
+
2349
+ #### SDKs
2350
+
2351
+ * Official StringEncrypt PHP package published on Packagist
2352
+ * StringEncrypt Python package on PyPi upgraded
2353
+
2354
+ # Fin
2355
+
2356
+ I hope you like it and you will try it at least :)
2357
+
2358
+ Bartosz Wójcik
2359
+
2360
+ * Visit my site at — https://www.pelock.com
2361
+ * X — https://x.com/PELock
2362
+ * GitHub — https://github.com/PELock