390 lines
18 KiB
HTML
390 lines
18 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title data-i18n="anyanka_title_test_base">Full test - AnyankaKeys</title>
|
|
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
|
|
<style>html,body{background-color : #222;}</style>
|
|
<script src="../ecma/AnyankaKeys.ecma.js" charset="utf-8"></script>
|
|
<script charset="utf-8">
|
|
|
|
// https://anyankakeys.local/tests
|
|
|
|
const options = {
|
|
// Nullish || Boolean || Integer
|
|
summatory : null,
|
|
incremental : true,
|
|
random_private_start : null,
|
|
// scape_block : 1 << 3
|
|
};
|
|
const anyanka_keys = new AnyankaKeys(options);
|
|
const timeout = 1,
|
|
// maximum_character = [0xFE, 0xFFFE];
|
|
maximum_character = [0xFF, 0xFFFF];
|
|
// maximum_character = [0xFE, 0xFE];
|
|
let running = true;
|
|
|
|
const random_character = (i, maximum) => {
|
|
|
|
let code = 0;
|
|
|
|
do{
|
|
code = Math.random() * maximum_character[0] >> 0;
|
|
}while(
|
|
(!i && (!code || (options.scape_block & (1 << 3) && code < 0x100))) ||
|
|
(code & 0xFF == 92 || (code >> 8) & 0xFF == 92)
|
|
);
|
|
|
|
return String.fromCharCode(code);
|
|
};
|
|
|
|
const random = {
|
|
undefined : (level = 0) => undefined,
|
|
null : (level = 0) => null,
|
|
string : (level = 0) => new Array(Math.random() * 100 >> 0).fill("").map(
|
|
level ? (_, i) => random_character(maximum_character[0], i) :
|
|
(_, i) => random_character(maximum_character[1], i)).join(""),
|
|
integer : (level = 0) => Math.random() * 2 ** 28 >> 0,
|
|
// integer : (level = 0) => 2 ** (Math.random() * 28 >> 0),
|
|
array : (level = 0) => level > 2 ? [] : new Array(Math.random() * 100 >> 0).fill(0).map(() => get_random(level)),
|
|
boolean : (level = 0) => Math.random() > .5,
|
|
bytes : (level = 0) => new Array(Math.random() * 100 >> 0).fill(0).map(() => Math.random() * 0x100 >> 0),
|
|
utf8 : (level = 0) => new Uint8Array(new Array(Math.random() * 100 > 0).map(() => Math.random() * 0x100 >> 0))
|
|
};
|
|
|
|
const get_random = (level = -1) => {
|
|
|
|
const methods = Object.values(random);
|
|
|
|
return methods[Math.random() * methods.length >> 0](level + 1);
|
|
};
|
|
|
|
const encrypt_example = (example, show_only_errors) => {
|
|
|
|
const encrypted = anyanka_keys.encrypt(example),
|
|
decrypted = anyanka_keys.decrypt(encrypted),
|
|
json = [JSON.stringify(example), JSON.stringify(decrypted)];
|
|
|
|
if(json[0] != json[1])
|
|
console.error([example, encrypted, decrypted, ...json]);
|
|
else
|
|
show_only_errors || console.log([example, encrypted, decrypted], ...json);
|
|
|
|
};
|
|
|
|
const examples = {
|
|
a : () => [
|
|
[347234, 500000],
|
|
[[2342, 345, 12], 3000],
|
|
[[67, 200, 34,], 256]
|
|
].forEach(([example, base]) => {
|
|
|
|
const changed = {parameters : new AnyankaKeysBaseChangeParameters({from : base}), data : [], set : value => changed.data.unshift(value)},
|
|
returned = {parameters : new AnyankaKeysBaseChangeParameters({from : 58, to : base}), data : [], set : value => returned.data.unshift(value)};
|
|
|
|
AnyankaKeys.change_base_iteration(example, changed.set, changed.parameters);
|
|
changed.parameters.end(changed.set);
|
|
AnyankaKeys.change_base_iteration(changed.data, returned.set, returned.parameters);
|
|
returned.parameters.end(returned.set);
|
|
|
|
console.log([base, example, changed.data, returned.data]);
|
|
|
|
}),
|
|
b : () => [
|
|
// "PASA xD",
|
|
// ["PASA xD"],
|
|
// [45, 78, 134, 1, 1, 1],
|
|
// true,
|
|
// false,
|
|
// null,
|
|
// undefined,
|
|
// 783456,
|
|
33554432
|
|
].forEach(example => {
|
|
|
|
const encrypted = anyanka_keys.encrypt(example);
|
|
// console.log([example, "PASA"]);
|
|
const decrypted = anyanka_keys.decrypt(encrypted);
|
|
|
|
// console.log([example, [...example].map(character => [character, character.charCodeAt(0)]), encrypted, decrypted, decrypted.map(code => String.fromCharCode(code)).join("")]);
|
|
// console.log([example, [...example].map(character => [character, character.charCodeAt(0)]), encrypted, decrypted]);
|
|
console.log([example, encrypted, decrypted]);
|
|
|
|
}),
|
|
c : x => { // Absurdo.
|
|
x || (x = Math.random() * 100 >> 0);
|
|
while(x -- > 0){
|
|
|
|
const example = Math.random() * (1 << 28) >> 0,
|
|
changed = AnyankaKeys.change_base(example, 58, 1 << 28),
|
|
returned = AnyankaKeys.change_base(changed, 1 << 28, 58);
|
|
|
|
console.log([example, changed, returned]);
|
|
|
|
};
|
|
},
|
|
d : (x = null, show_only_errors = false) => {
|
|
x || (x = Math.random() * 100 >> 0);
|
|
while(x -- > 0){
|
|
|
|
const base = {
|
|
from : (Math.random() * (1 << 15) >> 0) + 2,
|
|
to : (Math.random() * (1 << 15) >> 0) + 2
|
|
},
|
|
example = new Array((Math.random() * 13 >> 0) + 3).fill(0).map((_, i) => {
|
|
|
|
let value = Math.random() * base.from >> 0;
|
|
|
|
if(!i && !value)
|
|
while(!(value = Math.random() * base.from >> 0));
|
|
|
|
return value;
|
|
}),
|
|
changed = AnyankaKeys.change_base(example, base.to, base.from),
|
|
returned = AnyankaKeys.change_base(changed, base.from, base.to);
|
|
|
|
if(example.some((value, i) => returned[i] != value))
|
|
console.error([base, example, changed, returned]);
|
|
else
|
|
show_only_errors || console.log([base, example, changed, returned]);
|
|
|
|
};
|
|
},
|
|
e : (x = null, show_only_errors = false) => {
|
|
x || (x = Math.random() * 100 >> 0);
|
|
while(x -- > 0){
|
|
|
|
const base = (Math.random() * 254 >> 0) + 2,
|
|
example = new Array((Math.random() * 61 >> 0) + 3).fill("").map((_, i) => {
|
|
|
|
let value = Math.random() * 256 >> 0;
|
|
|
|
if(!i && !value)
|
|
while(!(value = Math.random() * 256 >> 0));
|
|
|
|
return String.fromCharCode(value);
|
|
}).join(""),
|
|
changed = AnyankaKeys.change_base(example, base, 256),
|
|
returned = AnyankaKeys.change_base(changed, 256, base);
|
|
|
|
if(example != returned)
|
|
console.error([base, example, changed, returned]);
|
|
else
|
|
show_only_errors || console.log([base, example, changed, returned]);
|
|
|
|
};
|
|
|
|
},
|
|
f : () => {
|
|
|
|
const example = 783456;
|
|
let value = [783456, 0, 0],
|
|
i = 0;
|
|
|
|
AnyankaKeys.get_each_bytes(example, byte => {
|
|
console.log(byte);
|
|
value[1] += byte * 0x100 ** i;
|
|
value[2] = value[1] * 0x100 ** i + byte;
|
|
i ++;
|
|
});
|
|
|
|
console.log(value);
|
|
|
|
},
|
|
g : (show_only_errors = false) => running && setTimeout(() => {
|
|
console.log("PASA");
|
|
|
|
const example = get_random();
|
|
|
|
try{
|
|
|
|
const encrypted = anyanka_keys.encrypt(example),
|
|
decrypted = anyanka_keys.decrypt(encrypted),
|
|
json = [JSON.stringify(example), JSON.stringify(decrypted)]
|
|
|
|
if(json[0] != json[1])
|
|
console.error([example, encrypted, decrypted, ...json]);
|
|
else
|
|
show_only_errors || console.log([example, encrypted, decrypted], ...json);
|
|
|
|
examples.g(show_only_errors);
|
|
|
|
}catch(exception){
|
|
console.log(example);
|
|
console.error(exception);
|
|
};
|
|
|
|
}, timeout),
|
|
h : (show_only_errors = false) => running && setTimeout(() => {
|
|
console.log("PASA");
|
|
|
|
const example = random.integer(),
|
|
encrypted = anyanka_keys.encrypt(example),
|
|
decrypted = anyanka_keys.decrypt(encrypted),
|
|
json = [JSON.stringify(example), JSON.stringify(decrypted)];
|
|
|
|
if(json[0] != json[1])
|
|
console.error([example, encrypted, decrypted, ...json]);
|
|
else
|
|
show_only_errors || console.log([example, encrypted, decrypted], ...json);
|
|
|
|
examples.h(show_only_errors);
|
|
|
|
}, timeout),
|
|
stop : () => running = false,
|
|
bytes : (show_only_errors = false) => running && setTimeout(() => {
|
|
|
|
const example = random.bytes(),
|
|
encrypted = anyanka_keys.encrypt(example),
|
|
decrypted = anyanka_keys.decrypt(encrypted);
|
|
|
|
if(JSON.stringify(example) != JSON.stringify(decrypted))
|
|
console.error([JSON.stringify(example), encrypted, JSON.stringify(decrypted)]);
|
|
else
|
|
show_only_errors || console.log([JSON.stringify(example), encrypted, JSON.stringify(decrypted)]);
|
|
|
|
examples.bytes(show_only_errors);
|
|
|
|
}, timeout),
|
|
bytes_b : () => {
|
|
|
|
// const example = [131,187,55,219,94,25,18,170,132,212,189,200,188,212,64,50,120,112,37,155],
|
|
// const example = [],
|
|
const example = [0,191,24,6,173],
|
|
encrypted = anyanka_keys.encrypt(example),
|
|
decrypted = anyanka_keys.decrypt(encrypted);
|
|
|
|
// console.log([example.length, decrypted.length]);
|
|
|
|
console[
|
|
JSON.stringify(example) != JSON.stringify(decrypted) ? "error" : "log"
|
|
]([JSON.stringify(example), encrypted, JSON.stringify(decrypted)]);
|
|
|
|
},
|
|
// https://anyankakeys.local/tests
|
|
aa : show_only_errors => [
|
|
[205,204,187],
|
|
[29,167,216,222,216,244,130,137,226,110,151,180,244,251,164,136,55,196,183,145,219,118,25,57,209,172,233,137,42,248,217,247,114,34,39,120,154,5,223,21,145,213,141],
|
|
[244,36,219,121,175,198,233,43,156,74,121,199,113,226,33,21,217,103,226,186,80,245,82,186,51,49,26,135,35,43,143,241,111,138,188,102,11,99,20,162,63,199,53,170,42,103,242,9,127,130,76,156,218,246,117,245,95,25,205,214,55,201,232,237,100],
|
|
[228,253,25,186,36,216,62,182,189,128,37,44,221,45,125,58,253,32,122,54,245,193,99,117,89,8,53,109,26,43,49,46,58,223,67,84,146,206,118,31,174,5,29,122,98,92,74,159,153,163,252,91,142,243,160,234,242,64,105,150,139,241,179,129,79,60,69,176,12,245,115,13,225,105,222,7,67,28,248,27,88,135,50,49,210,4,205,239,243,171],
|
|
[86,76,16,5,7,37,86,111,65,203,77,6,92,44,244,153,45,66,29,7,134,193,4,244,85,200,143,41,142,218,13,93,186,215,221,126,56,60,17,252,57,188,126,148,22,204,49,110,237]
|
|
].forEach(example => encrypt_example(example, show_only_errors)),
|
|
ab : () => {
|
|
|
|
const start = Date.now();
|
|
|
|
[
|
|
{}, [], 0, "0", [0], 1, "1", [1], 2, "2", [3], 3,
|
|
[205,204,187],
|
|
[29,167,216,222,216,244,130,137,226,110,151,180,244,251,164,136,55,196,183,145,219,118,25,57,209,172,233,137,42,248,217,247,114,34,39,120,154,5,223,21,145,213,141],
|
|
[244,36,219,121,175,198,233,43,156,74,121,199,113,226,33,21,217,103,226,186,80,245,82,186,51,49,26,135,35,43,143,241,111,138,188,102,11,99,20,162,63,199,53,170,42,103,242,9,127,130,76,156,218,246,117,245,95,25,205,214,55,201,232,237,100],
|
|
[228,253,25,186,36,216,62,182,189,128,37,44,221,45,125,58,253,32,122,54,245,193,99,117,89,8,53,109,26,43,49,46,58,223,67,84,146,206,118,31,174,5,29,122,98,92,74,159,153,163,252,91,142,243,160,234,242,64,105,150,139,241,179,129,79,60,69,176,12,245,115,13,225,105,222,7,67,28,248,27,88,135,50,49,210,4,205,239,243,171],
|
|
[86,76,16,5,7,37,86,111,65,203,77,6,92,44,244,153,45,66,29,7,134,193,4,244,85,200,143,41,142,218,13,93,186,215,221,126,56,60,17,252,57,188,126,148,22,204,49,110,237]
|
|
].forEach(example => {
|
|
|
|
const start = Date.now(),
|
|
hash = anyanka_keys.hash(example),
|
|
end = Date.now();
|
|
|
|
console.log([start, hash, end, end - start, example]);
|
|
|
|
});
|
|
|
|
const end = Date.now();
|
|
|
|
console.log([start, end, end - start]);
|
|
|
|
},
|
|
ag : (show_only_errors = false) => running && setTimeout(() => {
|
|
|
|
const example = get_random(),
|
|
start = Date.now(),
|
|
hash = anyanka_keys.hash(example),
|
|
end = Date.now();
|
|
|
|
if(hash.length != 47)
|
|
console.error([start, hash, hash.length, end, end - start, example]);
|
|
else
|
|
console.log([start, hash, hash.length, end, end - start, example]);
|
|
|
|
examples.ag();
|
|
|
|
}, timeout),
|
|
ba : () => {
|
|
|
|
const ajax = new XMLHttpRequest();
|
|
|
|
ajax.open("get", "/tests/files/text.txt", true);
|
|
ajax.overrideMimeType("text/xml;charset=utf-8");
|
|
// ajax.overrideMimeType("text/xml;charset=UTF-8");
|
|
ajax.onreadystatechange = () => {
|
|
if(ajax.readyState == 4){
|
|
|
|
// const example = document.querySelector(".masive-text").innerText,
|
|
const example = ajax.responseText,
|
|
start = [Date.now(), 0, 0],
|
|
hash = anyanka_keys.hash(example),
|
|
end = [Date.now(), 0, 0];
|
|
|
|
start[1] = Date.now();
|
|
const encrypted = anyanka_keys.encrypt(example);
|
|
end[1] = Date.now();
|
|
start[2] = Date.now();
|
|
const decrypted = anyanka_keys.decrypt(encrypted);
|
|
end[2] = Date.now();
|
|
|
|
console.log(example.substring(0, 256));
|
|
console.log([start[0], hash, hash.length, end[0], end[0] - start[0], example.length]);
|
|
console.log([start[1], encrypted, encrypted.length, end[1], end[1] - start[1], example.length]);
|
|
console.log([start[2], decrypted, decrypted.length, end[2], end[2] - start[2], example.length]);
|
|
console.log([end[2] - start[1], end[2] - start[0], example == decrypted, decrypted.length]);
|
|
|
|
// [...decrypted].forEach((character, i) => character != example[i] && console.log([i, character, example[i]]));
|
|
|
|
};
|
|
};
|
|
ajax.send(null);
|
|
|
|
},
|
|
bb : example => {
|
|
|
|
const encrypted = anyanka_keys.encrypt(example || (example = random.string())),
|
|
decrypted = anyanka_keys.decrypt(encrypted);
|
|
|
|
console.log([example, encrypted, decrypted]);
|
|
|
|
}
|
|
};
|
|
|
|
anyanka_keys.set_public_key("fFRjQ8vrphUmJ517uithMT7vtj6pK5BrtSqQvpgtovdG297iVBADHuazcf7s25WEdy37wXJWxS7zmREe1yPY3M5obAaEbJV9Gc5WNCeJUQTFswe4ajNmkDebg81jqiLb1CGja83tSU5PFSPwF1NZWb7F3fPUZuZh7WToTyz2sc875Y5fAJTGsbBCBbwvTW4ZViRgZ25fe3rqgnDJ29FCmDSKwnfcWVLBcoESCEoaw8DkYQLJwdJAhsof5FsfnxdR");
|
|
|
|
// ["a", "b"].forEach(key => examples[key]());
|
|
// ["c"].forEach(key => examples[key]());
|
|
// ["d"].forEach(key => examples[key](1000, true));
|
|
// ["e"].forEach(key => examples[key](1000, true));
|
|
// examples.b();
|
|
// examples.f();
|
|
examples.g(true);
|
|
// examples.bytes(false);
|
|
// examples.bytes_b();
|
|
// examples.h(true);
|
|
// setTimeout(() => running = false, 5000);
|
|
// examples.aa();
|
|
// examples.ab();
|
|
// examples.ag();
|
|
// examples.ba();
|
|
// examples.bb("KyMAN cuesta 239€, \u0016, joder.");
|
|
|
|
// console.log("€".charCodeAt(0));
|
|
// console.log(String.fromCharCode(92));
|
|
|
|
// console.log(anyanka_keys.get_public_key());
|
|
|
|
</script>
|
|
|
|
</head>
|
|
<body></body>
|
|
</html>
|