Skip to content

Commit 557a00a

Browse files
committed
Updated encryption.
1 parent a52b48b commit 557a00a

1 file changed

Lines changed: 64 additions & 26 deletions

File tree

utils.js

Lines changed: 64 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3762,45 +3762,82 @@ String.prototype.toKeywords = String.prototype.keywords = function(forSearch, al
37623762
return exports.keywords(this, forSearch, alternative, max_count, max_length, min_length);
37633763
};
37643764

3765-
const CRYPTO = {};
3765+
function checksum(val) {
3766+
var sum = 0;
3767+
for (var i = 0; i < val.length; i++)
3768+
sum += val.charCodeAt(i);
3769+
return sum;
3770+
}
37663771

37673772
String.prototype.encrypt = function(key, isUnique) {
3773+
var str = '0' + this;
3774+
var data_count = str.length;
3775+
var key_count = key.length;
3776+
var random = isUnique ? exports.random(120) + 40 : 65;
3777+
var count = data_count + (random % key_count);
3778+
var values = [];
3779+
var index = 0;
3780+
3781+
values[0] = String.fromCharCode(random);
3782+
3783+
var counter = this.length + key.length;
37683784

3769-
if (!CRYPTO[key]) {
3770-
var size = F.config['default-crypto-key'];
3771-
CRYPTO[key] = Buffer.alloc(size, key.length > size ? key.substring(0, size) : key, 'utf8');
3785+
for (var i = count - 1; i > 0; i--) {
3786+
index = str.charCodeAt(i % data_count);
3787+
values[i] = String.fromCharCode(index ^ (key.charCodeAt(i % key_count) ^ random));
37723788
}
37733789

3774-
var cipher = Crypto.createCipheriv(F.config['default-crypto'], CRYPTO[key], CRYPTO[key]);
3775-
var str = this.toString();
3776-
var plus = isUnique ? '_' + GUID(10) : '';
3777-
return cipher.update(plus + str.hash() + '#' + str, 'utf8', 'hex') + cipher.final('hex');
3790+
str = exports.createBuffer(counter + '=' + values.join(''), ENCODING).toString('hex');
3791+
var sum = 0;
3792+
3793+
for (var i = 0; i < str.length; i++)
3794+
sum += str.charCodeAt(i);
3795+
3796+
return (sum + checksum(F.config.secret + key)) + '-' + str;
37783797
};
37793798

37803799
String.prototype.decrypt = function(key) {
37813800

3782-
if (!CRYPTO[key]) {
3783-
var size = F.config['default-crypto-key'];
3784-
CRYPTO[key] = Buffer.alloc(size, key.length > size ? key.substring(0, size) : key, 'utf8');
3785-
}
3801+
var index = this.indexOf('-');
3802+
if (index === -1)
3803+
return null;
37863804

3787-
var result;
3805+
var cs = +this.substring(0, index);
3806+
if (!cs || isNaN(cs))
3807+
return null;
37883808

3789-
try {
3790-
var decipher = Crypto.createDecipheriv(F.config['default-crypto'], CRYPTO[key], CRYPTO[key]);
3791-
result = decipher.update(this, 'hex') + decipher.final();
3792-
} catch (e) {
3809+
var hash = this.substring(index + 1);
3810+
var sum = checksum(F.config.secret + key);
3811+
for (var i = 0; i < hash.length; i++)
3812+
sum += hash.charCodeAt(i);
3813+
3814+
if (sum !== cs)
37933815
return null;
3794-
}
37953816

3796-
var beg = result.indexOf('#');
3797-
if (beg === -1)
3817+
var values = exports.createBuffer(hash, 'hex').toString(ENCODING);
3818+
var index = values.indexOf('=');
3819+
if (index === -1)
3820+
return null;
3821+
3822+
var counter = +values.substring(0, index);
3823+
if (isNaN(counter))
37983824
return null;
3799-
var o = result.substring(beg + 1);
3800-
var sum = result.substring(0, beg);
3801-
if (sum[0] === '_')
3802-
sum = sum.substring(11);
3803-
return +sum == o.hash() ? o : null;
3825+
3826+
values = values.substring(index + 1);
3827+
3828+
var count = values.length;
3829+
var random = values.charCodeAt(0);
3830+
var key_count = key.length;
3831+
var data_count = count - (random % key_count);
3832+
var decrypt_data = [];
3833+
3834+
for (var i = data_count - 1; i > 0; i--) {
3835+
index = values.charCodeAt(i) ^ (random ^ key.charCodeAt(i % key_count));
3836+
decrypt_data[i] = String.fromCharCode(index);
3837+
}
3838+
3839+
var val = decrypt_data.join('');
3840+
return counter !== (val.length + key.length) ? null : val;
38043841
};
38053842

38063843
String.prototype.base64ToFile = function(filename, callback) {
@@ -5993,4 +6030,5 @@ exports.Callback = function(count, callback) {
59936030
};
59946031

59956032
global.WAIT = exports.wait;
5996-
!global.F && require('./index');
6033+
!global.F && require('./index');
6034+

0 commit comments

Comments
 (0)