@@ -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
4452import { Abracadabra } from " abracadabra-cn" ;
4553
4654let 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
83124import { Abracadabra } from " abracadabra-cn" ;
@@ -93,31 +134,26 @@ Abracadabra.ENCRYPT = "ENCRYPT";
93134Abracadabra.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
127163let Abra = new Abracadabra (); // 不附带参数,
128164
129- Abra .Input (input, mode, key, q);
165+ Abra .OldInput (input, mode, key, q);
130166
131167let 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在执行编译时,会自动对文言文密本中的句式语法执行检查,如果有问题,则会报错并提示编译失败。
0 commit comments