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
110 changes: 55 additions & 55 deletions JavyInputAppendix.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,19 @@
*/

function base64ToUint8Array(base64) {
// 将Base64字符串转换为二进制字符串
const binaryString = _atob(base64);
// 将二进制字符串转换为Uint8Array
const len = binaryString.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes;
// 将Base64字符串转换为二进制字符串
const binaryString = _atob(base64);
// 将二进制字符串转换为Uint8Array
const len = binaryString.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes;
}

function uint8ArrayToBase64(uint8Array) {
return _btoa(String.fromCharCode.apply(null, uint8Array));
return _btoa(String.fromCharCode.apply(null, uint8Array));
}

// Read input from stdin
Expand All @@ -44,53 +44,53 @@ JavywriteOutput(Javyresult);

// The main function.
function index(input) {
if(input === "ERROR"){
if (input === "ERROR") {
return "INCORRECT JSON";
}

if(input.method == "NEXT"){
if(input.inputType == "TEXT"){
let Abra = new Abracadabra(input.inputType,input.outputType);
Abra.Input_Next(input.input,input.mode,input.key,input.q,input.r);
let Output = Abra.Output();
if(input.outputType == "UINT8"){
Output = uint8ArrayToBase64(Output);
}
return Output;
}else if(input.inputType == "UINT8"){
let Abra = new Abracadabra(input.inputType,input.outputType);
let UINT8In = base64ToUint8Array(input.input);
Abra.Input_Next(UINT8In,input.mode,input.key,input.q,input.r);
let Output = Abra.Output();
if(input.outputType == "UINT8"){
Output = uint8ArrayToBase64(Output);
}
return Output;
}else{
return "ERROR inputType";
if (input.method == "NEXT") {
if (input.inputType == "TEXT") {
let Abra = new Abracadabra(input.inputType, input.outputType);
Abra.Input_Next(input.input, input.mode, input.key, input.q, input.r);
let Output = Abra.Output();
if (input.outputType == "UINT8") {
Output = uint8ArrayToBase64(Output);
}
return Output;
} else if (input.inputType == "UINT8") {
let Abra = new Abracadabra(input.inputType, input.outputType);
let UINT8In = base64ToUint8Array(input.input);
Abra.Input_Next(UINT8In, input.mode, input.key, input.q, input.r);
let Output = Abra.Output();
if (input.outputType == "UINT8") {
Output = uint8ArrayToBase64(Output);
}
return Output;
} else {
return "ERROR inputType";
}
}else if(input.method == "OLD"){
if(input.inputType == "TEXT"){
let Abra = new Abracadabra(input.inputType,input.outputType);
Abra.Input(input.input,input.mode,input.key,input.q);
let Output = Abra.Output();
if(input.outputType == "UINT8"){
Output = uint8ArrayToBase64(Output);
}
return Output;
}else if(input.inputType == "UINT8"){
let Abra = new Abracadabra(input.inputType,input.outputType);
let UINT8In = base64ToUint8Array(input.input);
Abra.Input(UINT8In,input.mode,input.key,input.q);
let Output = Abra.Output();
if(input.outputType == "UINT8"){
Output = uint8ArrayToBase64(Output);
}
return Output;
}else{
return "ERROR inputType";
} else if (input.method == "OLD") {
if (input.inputType == "TEXT") {
let Abra = new Abracadabra(input.inputType, input.outputType);
Abra.Input(input.input, input.mode, input.key, input.q);
let Output = Abra.Output();
if (input.outputType == "UINT8") {
Output = uint8ArrayToBase64(Output);
}
return Output;
} else if (input.inputType == "UINT8") {
let Abra = new Abracadabra(input.inputType, input.outputType);
let UINT8In = base64ToUint8Array(input.input);
Abra.Input(UINT8In, input.mode, input.key, input.q);
let Output = Abra.Output();
if (input.outputType == "UINT8") {
Output = uint8ArrayToBase64(Output);
}
return Output;
} else {
return "ERROR inputType";
}
}else{
} else {
return "ERROR method";
}
}
Expand Down Expand Up @@ -122,12 +122,12 @@ function JavyreadInput() {
context.bufferOffset += chunk.length;
return context;
},
{ bufferOffset: 0, finalBuffer: new Uint8Array(totalBytes) },
{ bufferOffset: 0, finalBuffer: new Uint8Array(totalBytes) }
);

const InputDecoded = new TextDecoder().decode(finalBuffer);
try {
return JSON.parse(InputDecoded);;
return JSON.parse(InputDecoded);
} catch {
return "ERROR";
}
Expand All @@ -140,4 +140,4 @@ function JavywriteOutput(output) {
// Stdout file descriptor
const fd = 1;
Javy.IO.writeSync(fd, buffer);
}
}
3 changes: 1 addition & 2 deletions USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,4 @@ Demo 页使用 Vue 构建,你可以随时下载源码,在你喜欢的地方
### 通顺

如果嫌生成的句子过于生硬,不妨多次尝试生成(多点几下加密),选择一个看起来最好的密文。
只要密钥和原文相同,生成出的所有密文均可以正常解密。

只要密钥和原文相同,生成出的所有密文均可以正常解密。
4 changes: 2 additions & 2 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.0.10",
"version": "3.0.11",
"main": "./dist/abracadabra-cn.js",
"type": "module",
"scripts": {
Expand Down
42 changes: 20 additions & 22 deletions src/javascript/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ export class Abracadabra {
}
}
}
/**
/**
* 输入数据以处理,请注意指定的类型
*
* **模式定义**
Expand All @@ -188,38 +188,36 @@ export class Abracadabra {
* @param{bool}q 指定是否为密文添加标点符号,默认 true/添加;
* @param{int}r 密文算法的随机程度,越大随机性越强,默认 50,最大100,超过100将会出错;
*/
Input_Next(input, mode, key = "ABRACADABRA", q = true , r = 50) {
Input_Next(input, mode, key = "ABRACADABRA", q = true, r = 50) {
if (this.#input == Abracadabra.UINT8) {
//如果指定输入类型是UINT8
if (Object.prototype.toString.call(input) != "[object Uint8Array]") {
throw "Unexpected Input Type";
}
if(mode == Abracadabra.ENCRYPT){
let Nextinput = new Object();
Nextinput.output = input;
this.#res = Util_Next.enMap(Nextinput, key, q, r);
}else if(mode == Abracadabra.DECRYPT){
let Nextinput = new Object();
Nextinput.output = input;
this.#res = Util_Next.deMap(Nextinput, key);
}
return 0;

if (mode == Abracadabra.ENCRYPT) {
let Nextinput = new Object();
Nextinput.output = input;
this.#res = Util_Next.enMap(Nextinput, key, q, r);
} else if (mode == Abracadabra.DECRYPT) {
let Nextinput = new Object();
Nextinput.output = input;
this.#res = Util_Next.deMap(Nextinput, key);
}
return 0;
} else if (this.#input == Abracadabra.TEXT) {
//如果指定输入类型是TEXT
if (Object.prototype.toString.call(input) != "[object String]") {
throw "Unexpected Input Type";
}
let Nextinput = new Object();
Nextinput.output = Util.stringToUint8Array(input);
if(mode == Abracadabra.ENCRYPT){
this.#res = Util_Next.enMap(Nextinput, key, q, r);
}else if(mode == Abracadabra.DECRYPT){
this.#res = Util_Next.deMap(Nextinput, key);
}
return 0;
let Nextinput = new Object();
Nextinput.output = Util.stringToUint8Array(input);
if (mode == Abracadabra.ENCRYPT) {
this.#res = Util_Next.enMap(Nextinput, key, q, r);
} else if (mode == Abracadabra.DECRYPT) {
this.#res = Util_Next.deMap(Nextinput, key);
}
return 0;
}
return 0;
}

}
Loading