Skip to content

Commit dee1b59

Browse files
committed
Some Final Chores to V3.2
1 parent 37c1b37 commit dee1b59

10 files changed

Lines changed: 114 additions & 2710 deletions

File tree

docs/document/bench.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414

1515
## 测试表格
1616

17-
| 模型/评测项 | 纯密文识别 (0) | 纯密文识别 (50) | 夹杂密文识别 (50) | 审核 | 分类 |
18-
| ------------------- | :------------: | :-------------: | :---------------: | :-----------: | :---------: |
19-
| DeepSeek R1 | ✅ (2/8) | ✅ (3/8) | ✅ (0/4) | ✅ 过审 | 文学 |
20-
| DeepSeek V3 | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) | ✅ 过审 | 古典文学 |
21-
| GPT 4o | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) | ✅ 过审 | 意象诗文 |
22-
| Qwen 2.5-72B | ✅ (3/8) | ❌ (4/4) | ✅ (0/4) | ✅ 过审 | 文学创作 |
23-
| Qwen QwQ-32B | ✅ (0/4) | ✅ (1/8) | ✅ (0/4) | 🟠 \*过审 | 古典文学 |
24-
| Qwen 3-235B-A22B | ✅ (0/4) | ✅ (1/8) | ✅ (0/4) | ✅ 过审 | 诗歌 |
25-
| ERNIE 4.5-300B-A47B | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) | ✅ 过审 | 抽象文学 |
26-
| Kimi K2 Instruct | ✅ (1/8) | ✅ (3/8) | ✅ (0/4) | ✅ 过审 | 文学/散文诗 |
27-
| 腾讯云 内容安全服务 | —— | —— | —— | ✅ 过审(0/10) | —— |
28-
| 百度云 内容安全服务 | —— | —— | —— | ✅ 过审(0/10) | —— |
29-
| 阿里云 内容安全服务 | —— | —— | —— | ✅ 过审(0/10) | —— |
17+
| 模型/评测项 | 纯密文识别 (0) | 纯密文识别 (50) | 夹杂密文识别 (50) | 内容安全 | 分类 |
18+
| ------------------- | :------------: | :-------------: | :---------------: | :------: | :---------: |
19+
| DeepSeek R1 | ✅ (2/8) | ✅ (3/8) | ✅ (0/4) || 文学 |
20+
| DeepSeek V3 | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) || 古典文学 |
21+
| GPT 4o | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) || 意象诗文 |
22+
| Qwen 2.5-72B | ✅ (3/8) | ❌ (4/4) | ✅ (0/4) || 文学创作 |
23+
| Qwen QwQ-32B | ✅ (0/4) | ✅ (1/8) | ✅ (0/4) | 🟠\* | 古典文学 |
24+
| Qwen 3-235B-A22B | ✅ (0/4) | ✅ (1/8) | ✅ (0/4) || 诗歌 |
25+
| ERNIE 4.5-300B-A47B | ✅ (0/4) | ✅ (0/4) | ✅ (0/4) || 抽象文学 |
26+
| Kimi K2 Instruct | ✅ (1/8) | ✅ (3/8) | ✅ (0/4) || 文学/散文诗 |
27+
| 腾讯云 内容安全 | —— | —— | —— || —— |
28+
| 百度云 内容安全 | —— | —— | —— || —— |
29+
| 阿里云 内容安全 | —— | —— | —— || —— |
30+
| 科大讯飞 内容安全 | —— | —— | —— || —— |

docs/document/comparison.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# 功能对比
22

3-
| 加密工具 | 开源 | 脱机运行 | 安全加密 | 仿真 | 压缩 | 易部署 |
4-
| ---------- | :--: | :------: | :------: | :--: | :--: | :----: |
5-
| 魔曰 |||||||
6-
| 与熊论道 ||||| 🟨 ||
7-
| 兽音译者 |||||||
8-
| 文本隐水印 |||||||
9-
| 新佛曰 ||| 🟨 ||||
10-
| 旧佛曰 |||||| 🟨 |
3+
| 加密工具 | 开源 | 脱机运行 | 安全加密 | 仿真 | 长度合理 | 易部署 |
4+
| ---------- | :--: | :------: | :------: | :--: | :------: | :----: |
5+
| 魔曰 |||||||
6+
| 与熊论道 |||||||
7+
| 兽音译者 |||||||
8+
| 新佛曰 ||| 🟨 ||||
9+
| 旧佛曰 |||||| 🟨 |
10+
| 文本隐水印 |||||||
11+
| 想曰 |||||||
1112

1213
### 注意:
1314

@@ -54,6 +55,16 @@
5455

5556
---
5657

58+
### 想曰
59+
60+
[想曰](https://github.com/fzxx/XiangYue)是一个开源项目,由 fzxx 开发。
61+
62+
它类似魔曰的传统加密模式,透过一个映射表映射经过压缩和加密的数据。
63+
64+
它使用多种算法加密数据,因此加密结果通常很长。生成的字符串是无意义的字符序列。
65+
66+
---
67+
5768
### 新佛曰
5869

5970
::: tip 佛曰密文示例

docs/document/js-deploy.md

Lines changed: 73 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,48 +36,89 @@ let Abra = new Abracadabra(InputMode, OutputMode);
3636

3737
`TEXT` 表明将来的输入/输出为 `String``UINT8` 表明将来的输入/输出为 `Uint8Array`,你可以灵活使用两种不同的类型。
3838

39-
### Input() 传统加密函数
39+
::: warning 接口兼容性须知
40+
旧的接口 `Input_Next()``Input()` 目前仍然可以使用,但未来的版本更新中会移除它们。
41+
:::
4042

41-
Abracadabra 库中仅有三个方法,`Input()` 是其中一个。
43+
::: tip 文件加/解密
44+
使用`Uint8Array`作为输入/输出方式,魔曰可以加解密任意二进制(图片/视频/任何文件),但是不推荐这么做。
45+
:::
46+
47+
### WenyanInput() 文言仿真加密函数
48+
49+
`WenyanInput()` 函数用来对数据执行文言文仿真加密。
4250

4351
```js
4452
import { Abracadabra } from "abracadabra-cn";
4553

4654
let Abra = new Abracadabra(); //不附带参数,
4755

48-
/*
49-
MODES:
50-
51-
Abracadabra.ENCRYPT = "ENCRYPT";
52-
强制加密
53-
54-
Abracadabra.DECRYPT = "DECRYPT";
55-
强制解密
56-
57-
Abracadabra.AUTO = "AUTO";
58-
自动(遵循自动逻辑)
59-
60-
*/
61-
Abra.Input(input, mode, key, q);
56+
/**
57+
* 魔曰 文言文加密模式
58+
*
59+
* @param {string | Uint8Array} input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
60+
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
61+
* @param {string} key 指定密钥,默认是 ABRACADABRA;
62+
* @param {WenyanConfig} WenyanConfigObj 文言文的生成配置;
63+
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
64+
*/
65+
Abra.WenyanInput(input, mode, key, {...});
6266
```
6367

6468
第一个参数 `input` 接受两种类型的输入,分别是 `String``Uint8Array`,这是此前在实例化的时候指定的输入类型。
6569

6670
如果你指定了 `UINT8` 却传入 `String`,将抛出错误,反之亦然。
6771

68-
第二个参数 `mode` 接受上文中特定字符串的输入,任何其他输入都将被视为 `AUTO` 并被忽略
72+
第二个参数 `mode` 接受上文中特定字符串的输入,任何其他输入都将被忽略,不会输出任何结果
6973

7074
第三个参数 `key` 接受字符串类型的密钥输入,如果不提供,则默认使用内置密钥 `ABRACADABRA`
7175

7276
如果指定了错误的密码,那么在解码/解密数据校验过程中会抛出错误。
7377

74-
第四个参数 `q` 接受布尔值的输入,如果传入 `true`,则加密结果中将不含标志位,更加隐蔽,但解密时需要强制解密。
78+
第四个参数接受一个`WenyanConfig`配置对象的输入,仅在加密的时候需要:
79+
80+
```javascript
81+
export interface WenyanConfig {
82+
/** 指定是否为密文添加标点符号,默认 true/添加; */
83+
PunctuationMark?: boolean;
84+
/** 密文算法的随机程度,越大随机性越强,默认 50,最大100,超过100将会出错; */
85+
RandomIndex?: number;
86+
/** 指定是否强制生成骈文密文,默认 false; */
87+
PianwenMode?: boolean;
88+
/** 指定是否强制生成逻辑密文,默认 false; */
89+
LogicMode?: boolean;
90+
}
91+
```
92+
93+
`PunctuationMark` 是布尔值,默认为 `true`。如果传入 `false`,则加密结果中将不含标点符号,解密时可以忽略这个参数。
94+
95+
`RandomIndex` 是整数值,默认为`50`,最小值`0`,最大值`100`,超过 100 的输入将会报错。输入值越大,载荷量选择算法的随机性越大;输入值为 0 时,句式选择步骤将只选择载荷字较多的那个。解密时可以忽略这个参数。
7596

76-
在无错误的情况下, `Input()` 函数的返回值通常是 `0`
97+
`PianwenMode` 是布尔值,不指定则默认为 `false`。如果传入 `true`,则加密结果会优先使用骈文句式,呈现四字到五字一组的对仗格律,这有助于减少密文的总体长度。解密时可以忽略这个参数
7798

78-
### Input_Next() 文言仿真加密函数
99+
`LogicMode` 是布尔值,默认为 `false`。如果传入 `true`,则加密结果会优先使用逻辑句式,呈现强论述类逻辑风格。解密时可以忽略这个参数。
79100

80-
`Input_Next()` 函数用来对数据执行文言文仿真加密。
101+
`PianwenMode``LogicMode` 不能同时指定为 `true`,否则会抛出错误。
102+
103+
```javascript
104+
//正确调用方式:
105+
106+
import { Abracadabra } from "abracadabra-cn";
107+
let Abra = new Abracadabra(); //不附带参数,
108+
109+
Abra.WenyanInput(TestTemp, "ENCRYPT", "ABRACADABRA", {
110+
RandomIndex: 25,
111+
PianwenMode: true,
112+
}); //指定随机指数为25,并使用骈文模式,缺省项自动使用默认值
113+
114+
Abra.WenyanInput(TestTemp, "DECRYPT", "ABRACADABRA"); //解密不需要传入配置
115+
```
116+
117+
在无错误的情况下, `WenyanInput()` 函数的返回值通常是 `0`
118+
119+
### OldInput() 传统加密函数
120+
121+
`OldInput()` 用传统模式加密密文。
81122

82123
```js
83124
import { Abracadabra } from "abracadabra-cn";
@@ -93,31 +134,26 @@ Abracadabra.ENCRYPT = "ENCRYPT";
93134
Abracadabra.DECRYPT = "DECRYPT";
94135
强制解密
95136
137+
Abracadabra.AUTO = "AUTO";
138+
自动(遵循自动逻辑)
139+
96140
*/
97-
Abra.Input_Next(input, mode, key, q, r, p, l);
141+
Abra.OldInput(input, mode, key, q);
98142
```
99143

100144
第一个参数 `input` 接受两种类型的输入,分别是 `String``Uint8Array`,这是此前在实例化的时候指定的输入类型。
101145

102146
如果你指定了 `UINT8` 却传入 `String`,将抛出错误,反之亦然。
103147

104-
第二个参数 `mode` 接受上文中特定字符串的输入,任何其他输入都将被忽略,不会输出任何结果
148+
第二个参数 `mode` 接受上文中特定字符串的输入,任何其他输入都将被视为 `AUTO` 并被忽略
105149

106150
第三个参数 `key` 接受字符串类型的密钥输入,如果不提供,则默认使用内置密钥 `ABRACADABRA`
107151

108152
如果指定了错误的密码,那么在解码/解密数据校验过程中会抛出错误。
109153

110-
第四个参数 `q` 接受布尔值的输入,默认为 `true`。如果传入 `false`,则加密结果中将不含标点符号,解密时可以忽略这个参数。
111-
112-
第五个参数 `r` 接受整数值的输入,默认为`50`,最小值`0`,最大值`100`,超过 100 的输入将会报错。输入值越大,载荷量选择算法的随机性越大;输入值为 0 时,句式选择步骤将只选择载荷字较多的那个。解密时可以忽略这个参数。
113-
114-
第六个参数 `p` 接受布尔值的输入,默认为 `false`。如果传入 `true`,则加密结果会优先使用骈文句式,呈现四字到五字一组的对仗格律,这有助于减少密文的总体长度。解密时可以忽略这个参数。
115-
116-
第七个参数 `l` 接受布尔值的输入,默认为 `false`。如果传入 `true`,则加密结果会优先使用逻辑句式,呈现强论述类逻辑风格。解密时可以忽略这个参数。
117-
118-
`p``l` 不能同时指定为 `true`,否则会抛出错误。
154+
第四个参数 `q` 接受布尔值的输入,如果传入 `true`,则加密结果中将不含标志位,更加隐蔽,但解密时需要强制解密。
119155

120-
在无错误的情况下, `Input_Next()` 函数的返回值通常是 `0`
156+
在无错误的情况下, `OldInput()` 函数的返回值通常是 `0`
121157

122158
### Output()
123159

@@ -126,12 +162,12 @@ import { Abracadabra } from "abracadabra-cn";
126162

127163
let Abra = new Abracadabra(); //不附带参数,
128164

129-
Abra.Input(input, mode, key, q);
165+
Abra.OldInput(input, mode, key, q);
130166

131167
let Result = Abra.Output(); //获取输出
132168
```
133169

134-
在调用 `Output()` 之前,你需要至少调用过一次 `Input()`,否则将会抛出错误。
170+
在调用 `Output()` 之前,你需要至少调用过一次 `WenyanInput()` 或者 `OldInput()`,否则将会抛出错误。
135171

136172
调用 `Output()` 将获得此前输入的处理结果,其返回类型可能是 `String``Uint8Array`,取决于对象实例化时指定了何种输出模式。
137173

@@ -176,10 +212,10 @@ npm run build
176212
```
177213

178214
如果你对密码映射表做出了修改,那么请确保将 JSON 压缩成一行,转义成字符串。
179-
然后修改 `utils.js`(传统加密) 或者 `utils_next.js`(文言加密):
215+
然后修改 `ChineseMappingHelper.js` 中的 `OldMapper`(传统加密) 或者 `WenyanSimulator`(文言加密):
180216

181217
```js
182-
const Map = "...."; // 字符串内填密码映射表
218+
this.Map = "...."; // 字符串内填密码映射表
183219
```
184220

185221
在执行编译时,会自动对文言文密本中的句式语法执行检查,如果有问题,则会报错并提示编译失败。

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "abracadabra-cn",
33
"description": "Use Chinese to Encode Everything",
44
"private": false,
5-
"version": "3.1.11",
5+
"version": "3.2",
66
"main": "./dist/abracadabra-cn.js",
77
"types": "./dist/abracadabra-cn.d.ts",
88
"type": "module",

src/javascript/CoreHandler.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ export function Dec_OLD(input, key) {
187187

188188
//校验数据
189189
if (!CheckLuhnBit(TempStr2Int)) {
190+
/* v8 ignore next 9 */
190191
if (
191192
TempStr2Int.at(TempStr2Int.byteLength - 1) == 2 &&
192193
TempStr2Int.at(TempStr2Int.byteLength - 2) == 2 &&

src/javascript/main.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@
2727
*
2828
*/
2929

30-
import { Base64 } from "js-base64";
31-
//import * as Util from "./utils.js";
3230
import * as Core from "./CoreHandler.js";
33-
//import * as Util_Next from "./utils_next.js";
3431
import { preCheck_OLD, PreCheckResult, stringToUint8Array } from "./Misc.js";
3532
export class Abracadabra {
3633
//主类
@@ -222,6 +219,7 @@ export class Abracadabra {
222219
* @param{string}key 指定密钥,默认是 ABRACADABRA;
223220
* @param{bool}q 指定是否在加密后省略标志位,默认 false/不省略;
224221
*/
222+
/* v8 ignore next 4 */
225223
get Input() {
226224
// 使用 getter 属性
227225
return this.OldInput;
@@ -240,6 +238,7 @@ export class Abracadabra {
240238
* @param{bool}p 指定是否强制生成骈文密文,默认 false;
241239
* @param{bool}l 指定是否强制生成逻辑密文,默认 false;
242240
*/
241+
/* v8 ignore next 12 */
243242
Input_Next(
244243
input,
245244
mode,

src/javascript/mapping_next.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
*/
1212

1313
import { expect, test } from "vitest";
14+
import { WenyanSimulator } from "./ChineseMappingHelper";
1415

15-
import { Map } from "./utils_next.js";
16+
const Map = new WenyanSimulator(" ").Map;
1617

1718
function Check(Map2) {
1819
const Map_Obj = JSON.parse(Map2);

0 commit comments

Comments
 (0)