File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -102,9 +102,12 @@ export class AdvancedEncConfig {
102102 }
103103}
104104
105- //魔数 ,用于自动识别高级加密数据,理论上需要附加正常加密/解密时绝不可能在开头出现的Base64编码范围内字符
105+ //标头 ,用于自动识别高级加密数据,理论上需要附加正常加密/解密时绝不可能在开头出现的Base64编码范围内字符
106106const ADVANCED_ENC_MAGIC = "+=" ;
107+ //标头,用于自动识别灵活传输数据
108+ const FLEXIBLE_TRANSFER_MAGIC = "=/" ;
107109
110+ // =/+= +=/=
108111export class CallbackObj {
109112 /**
110113 * 魔曰 Debug 回调位点对象
@@ -144,10 +147,15 @@ export function Enc(
144147) {
145148 //初始化
146149 //input.output Uint8Array
147- let WenyanSimulatorObj = new WenyanSimulator ( key , callback ) ;
148-
149150 let OriginalData = new Uint8Array ( ) ;
150151 OriginalData = input . output ;
152+
153+ //如果灵活传输已经激活,则进入递归程序
154+ //if ((AdvancedEncObj.FlexibleTransfer.Enable = true)) {
155+ //}
156+
157+ let WenyanSimulatorObj = new WenyanSimulator ( key , callback ) ;
158+
151159 let TempS ;
152160 TempS = Uint8ArrayTostring ( OriginalData ) ;
153161
Original file line number Diff line number Diff line change @@ -449,6 +449,53 @@ export class ValueNoise1D {
449449 }
450450}
451451
452+ /**
453+ * 工具函数
454+ * 在长字符串的随机位置插入一个或两个子串,保证不破坏子串完整性
455+ *
456+ * @param {string } originalStr 原始长字符串
457+ * @param {string } sub1 必须提供的第一个子串
458+ * @param {string } [sub2] 可选的第二个子串
459+ * @returns {string } 拼接后的新字符串
460+ */
461+ export function insertSubstrings ( originalStr , sub1 , sub2 = undefined ) {
462+ const L = originalStr . length ;
463+
464+ // 如果 sub2 未传入、为 undefined 或为空字符串,则走单子串逻辑
465+ if ( ! sub2 ) {
466+ const i = Math . floor ( GetRandomIndex ( L ) ) ;
467+ return originalStr . slice ( 0 , i ) + sub1 + originalStr . slice ( i ) ;
468+ }
469+
470+ //随机选取 sub1 的插入位置 i1 (范围: 0 到 L)
471+ const i1 = Math . floor ( GetRandomIndex ( L ) ) ;
472+
473+ //随机选取 sub2 的虚拟插入位置 r (范围: 0 到 L + 1)
474+ const r = Math . floor ( GetRandomIndex ( L + 1 ) ) ;
475+
476+ //计算切片并执行单次字符串拼接
477+ if ( r <= i1 ) {
478+ // sub2 插入在 sub1 的前面
479+ return (
480+ originalStr . slice ( 0 , r ) +
481+ sub2 +
482+ originalStr . slice ( r , i1 ) +
483+ sub1 +
484+ originalStr . slice ( i1 )
485+ ) ;
486+ } else {
487+ // sub2 插入在 sub1 的后面
488+ const r_orig = r - 1 ;
489+ return (
490+ originalStr . slice ( 0 , i1 ) +
491+ sub1 +
492+ originalStr . slice ( i1 , r_orig ) +
493+ sub2 +
494+ originalStr . slice ( r_orig )
495+ ) ;
496+ }
497+ }
498+
452499export function preCheck_OLD ( inp ) {
453500 let input = String ( inp ) ;
454501 let size = input . length ; //第一次遍历字符数组的函数,负责判断给定的输入类型。
You can’t perform that action at this time.
0 commit comments