Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "abracadabra-cn",
"description": "Use Chinese to Encode Everything",
"private": false,
"version": "3.1.5",
"version": "3.1.7",
"main": "./dist/abracadabra-cn.js",
"type": "module",
"scripts": {
Expand Down
27 changes: 7 additions & 20 deletions src/javascript/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ export class Abracadabra {
static DECRYPT = "DECRYPT";
static AUTO = "AUTO";

#input = ""; //输入类型,可以是 BLOB 或者 TEXT
#output = ""; //输出类型,可以是 BLOB 或者 TEXT
#input = ""; //输入类型,可以是 UINT8 或者 TEXT
#output = ""; //输出类型,可以是 UINT8 或者 TEXT

#res = null; // 输出的结果

Expand All @@ -64,15 +64,7 @@ export class Abracadabra {
this.#output = outputType;
}
/**
* 输入数据以处理,请注意指定的类型
*
* **模式定义**
*
* **ENCRYPT** 强制加密。
*
* **DECRYPT** 强制解密。
*
* **AUTO** 自动判断输入是否是密文,然后自动执行对应操作。
* 魔曰 传统加密模式
*
* @param{string | Uint8Array}input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
* @param{string}mode 指定模式,可以是 ENCRYPT DECRYPT AUTO 中的一种;
Expand Down Expand Up @@ -106,7 +98,6 @@ export class Abracadabra {
mode == Abracadabra.DECRYPT
) {
//如果是加密的字符串且没有强制指定要再次加密,或者强制执行解密,自动执行解密
//注意,DEFAULT此时不可用(即使指定),在这里如果指定DEFAULT,也会自动执行解密
//如果是加密的字符串,指定AUTO在此处会自动解密
this.#res = Util.deMap(preCheckRes, key);
} else {
Expand Down Expand Up @@ -136,6 +127,9 @@ export class Abracadabra {
}
return 0;
}
/**
* 魔曰 获取加密/解密后的结果
*/
Output() {
if (this.#res == null) {
throw "Null Output, please input some data at first.";
Expand Down Expand Up @@ -170,14 +164,7 @@ export class Abracadabra {
}
}
/**
* 输入数据以处理,请注意指定的类型
*
* **模式定义**
*
* **ENCRYPT** 强制加密。
*
* **DECRYPT** 强制解密。
*
* 魔曰 文言文加密模式
*
* @param{string | Uint8Array}input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
* @param{string}mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
Expand Down
6 changes: 4 additions & 2 deletions src/javascript/main.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import { expect, test } from "vitest";
import { expect, test, bench } from "vitest";

import { Abracadabra } from "./main";

Expand All @@ -29,6 +29,7 @@ const TestLinks = [
"https://test.cn",
"https://test.cc",
"https://test.jp",
"https://test.one",
];

function generateRandomUint8Array(length) {
Expand Down Expand Up @@ -139,10 +140,11 @@ test("随机数据加密测试", { timeout: 15000 }, () => {
//传统模式,自动判别
Abra.Input(data, "AUTO", "ABRACADABRA");
TestTemp3 = Abra.Output();
Abra.Input(TestTemp2, "AUTO", "ABRACADABRA");
Abra.Input(TestTemp3, "AUTO", "ABRACADABRA");
TestTemp3 = Abra.Output();

expect(TestTemp).toStrictEqual(data);
expect(TestTemp2).toStrictEqual(data);
expect(TestTemp3).toStrictEqual(data);
});
});
7 changes: 7 additions & 0 deletions src/javascript/mapping_next.json
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@
"5D/V/N/而/V/A/,/V/zhi/道/ye/P",
"5E/N/zhi/V/V/,/实为/A/A/P",
"5C/本/MV/V/A/,/anti/V/N/N",
"5C/N/之/无/N/,/N/V/之/N",
"5D/V/N/而/V/之/者/,/非/其/N/AD/也/P",
"5B/今/V/N/以/V/A/N",
"5B/N/乃/V/V/N/zhi/N",
Expand Down Expand Up @@ -434,6 +435,8 @@
"5E/每/有/V/N/,/便/AD/然/V/N/P",
"5D/N/V/而/A/N/V/也",
"5E/不/有/A/N/,/何/V/A/N/Q",
"5C/N/之/无/N/,/N/V/之/N",
"6D/N/A/N/A/,/则/所/V/得/其/A/P",
"6B/以/N/V/,/like/V/N/V/N",
"6C/N/V/,/V/N/V/N",
"6E/虽/V/V/A/A/,/A/A/不/同/P",
Expand Down Expand Up @@ -465,6 +468,7 @@
"8E/是/故/无/A/无/A/,/无/A/无/A/,/N/之/所/V/、/N/之/所/V/ye/P",
"8C/V/N/A/A/,/V/N/A/A",
"8B/N/在/A/N/,/A/N/zhi/A/,/V/于/N/P",
"8B/like/A/N/V/N/,/不/V/N/V/之/N/P",
"8C/A/N/AD/V/,/N/N/AD/V",
"8C/A/N/V/N/,/N/N/V/N/P",
"8D/虽/无/N/N/zhi/V/,/亦/V/以/AD/V/A/N/P",
Expand Down Expand Up @@ -512,6 +516,7 @@
"5B/今/N/乃/A/N/A/N",
"5D/N/V/而/A/N/V/也",
"5E/不/有/A/N/,/何/V/A/N/Q",
"5C/N/之/无/N/,/N/V/之/N",
"6D/以/N/V/,/like/V/N/V/N",
"6D/A/zhi/V/N/,/亦/like/今/zhi/V/N/,/A/夫/P",
"6D/A/者/V/而/V/之/,/A/者/V/而/V/之/P",
Expand All @@ -526,6 +531,7 @@
"6D/A/则为/V/N/,/A/则为/V/N/P",
"6D/N/受/命/于/N/,/固/AD/然/V/于/A/N/P",
"6D/N/无/N/则/V/,/N/无/N/则/V/P",
"6D/N/A/N/A/,/则/所/V/得/其/A/P",
"7D/夫/A/之/N/V/N/者/,/其/所以/AD/V/者/N/也/P",
"7D/N/V/以/N/V/,/V/不/V/N",
"7C/N/N/V/N/,/A/于/N/N",
Expand All @@ -536,6 +542,7 @@
"7D/是故/A/N/不必不如/N/,/N/不必/A/于/A/N/P",
"7B/有/A/N/、/A/N/、/A/N/之/N/P",
"8E/虽/N/A/N/A/,/所/以/V/N/,其/N/A/ye/P",
"8B/like/A/N/V/N/,/不/V/N/V/之/N/P",
"8D/何必/V/N/V/N/,/V/N/zhi/N/N/哉/P",
"8D/N/anti/MV/V/N/,/still/继/N/V/,/why/,/and/N/而/anti/V/N/ye/P",
"8C/V/N/A/A/,/V/N/A/A",
Expand Down
4 changes: 3 additions & 1 deletion src/javascript/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ const SIG_DECRYPT_JP = "桜込凪雫実沢";
const SIG_DECRYPT_CN = "玚俟玊欤瞐珏";
const NULL_STR = "孎"; //默认忽略的占位字符,一个生僻字。

var MT = new MersenneTwister(Date.now());

const CHINESE_WEBPAN_LIB = [
"https://",
"lanzou",
Expand Down Expand Up @@ -583,7 +585,6 @@ function setCharOnIndex(string, index, char) {
}

function GetRandomIndex(length) {
let MT = new MersenneTwister(Math.floor(Math.random() * 1000000000));
let Rand = Math.floor(MT.random() * length);

return Rand;
Expand Down Expand Up @@ -702,6 +703,7 @@ function RoundReset() {
NUMBERSYMBOL_ROUND_1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
NUMBERSYMBOL_ROUND_2 = "~3{8}_-$[6(2^&#5|1*%0,<9:`+@7/?.>4=];!)"; //手动随机打乱的乱序轮
NUMBERSYMBOL_ROUND_3 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
MT = new MersenneTwister(Date.now());
}

function RoundControlInit(key) {
Expand Down
114 changes: 89 additions & 25 deletions src/javascript/utils_next.js

Large diffs are not rendered by default.