Skip to content

Commit 697e872

Browse files
committed
Added U.encryptID() and U.decryptID().
1 parent a5b7893 commit 697e872

3 files changed

Lines changed: 35 additions & 23 deletions

File tree

changes.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@
9595
- added: `SchemaEntity.clear()` for removing all current definition
9696
- added: new view engine markup `@{#}` for simulating of root URL
9797
- added: `String.ROOT()` for replacing `@{#}` markup in strings
98-
- added: `Number.encrypt(key)` for encrypting number values
99-
- added: `String.decryptnumber(key)` for decrypting of number values
100-
- added: `F.config['secret-numbers']` as a hidden secret for encrypting/decrypting values
98+
- added: `U.decryptID(value, key)` for encrypting number/string values
99+
- added: `U.encryptID(value, key)` for decrypting of number/string values
100+
- added: `F.config['secret-uid']` as a hidden secret for encrypting/decrypting values
101101

102102
- updated: (IMPORTANT) NoSQL binary divides files to independent directories for 1000 files per directory
103103
- updated: `GROUP()` by adding a new argument `url_prefix`

index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ function Framework() {
647647
version: '1.0.0',
648648
author: '',
649649
secret: this.syshash,
650-
'secret-numbers': 'numbers',
650+
'secret-uid': this.syshash.substring(10),
651651

652652
'security.txt': 'Contact: mailto:support@totaljs.com\nContact: https://www.totaljs.com/contact/',
653653
'etag-version': '',
@@ -8885,7 +8885,7 @@ F.$configure_configs = function(arr, rewrite) {
88858885

88868886
switch (name) {
88878887
case 'secret':
8888-
case 'secret-numbers':
8888+
case 'secret-uid':
88898889
obj[name] = value;
88908890
break;
88918891
case 'default-request-length':
@@ -9033,6 +9033,9 @@ F.$configure_configs = function(arr, rewrite) {
90339033

90349034
U.extend(F.config, obj, rewrite);
90359035

9036+
if (!F.config['secret-uid'])
9037+
F.config['secret-uid'] = (F.config.name).crc32(true).toString();
9038+
90369039
var tmp = F.config['mail-smtp-options'];
90379040
if (typeof(tmp) === 'string' && tmp) {
90389041
tmp = new Function('return ' + tmp)();

utils.js

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3879,17 +3879,33 @@ String.prototype.decrypt = function(key, secret) {
38793879
return counter !== (val.length + key.length) ? null : val;
38803880
};
38813881

3882-
String.prototype.decryptnumber = function(salt) {
3883-
var val = this.decrypt(salt, F.config['secret-numbers']);
3884-
var num = 0;
3885-
if (val) {
3886-
num = +val;
3887-
if (isNaN(num))
3888-
return 0;
3889-
for (var i = 0; i < salt.length; i++)
3890-
num -= salt.charCodeAt(i);
3891-
}
3892-
return num;
3882+
exports.encryptID = function(val, key) {
3883+
3884+
var num = typeof(val) === 'number';
3885+
var sum = 0;
3886+
3887+
if (!key)
3888+
key = F.config.secret;
3889+
3890+
val = val.toString();
3891+
3892+
for (var i = 0; i < val.length; i++)
3893+
sum += val.charCodeAt(i);
3894+
3895+
for (var i = 0; i < key.length; i++)
3896+
sum += key.charCodeAt(i);
3897+
3898+
return (num ? 'n' : 'x') + (F.config['secret-uid'] + val + sum + key).crc32(true).toString(16) + 'x' + val;
3899+
};
3900+
3901+
exports.decryptID = function(val, key) {
3902+
var num = val[0] === 'n';
3903+
var raw = val.substring(val.indexOf('x', 1) + 1);
3904+
3905+
if (num)
3906+
raw = +raw;
3907+
3908+
return exports.encryptID(raw, key) === val ? raw : null;
38933909
};
38943910

38953911
String.prototype.base64ToFile = function(filename, callback) {
@@ -4074,13 +4090,6 @@ String.prototype.removeTags = function() {
40744090
return this.replace(regexpTags, '');
40754091
};
40764092

4077-
Number.prototype.encrypt = function(salt) {
4078-
var num = this;
4079-
for (var i = 0; i < salt.length; i++)
4080-
num += salt.charCodeAt(i);
4081-
return num.toString().encrypt(salt, false, F.config['secret-numbers']);
4082-
};
4083-
40844093
Number.prototype.floor = function(decimals) {
40854094
return Math.floor(this * Math.pow(10, decimals)) / Math.pow(10, decimals);
40864095
};

0 commit comments

Comments
 (0)