UNPKG

@ddunigma/node

Version:
90 lines (85 loc) 3.94 kB
import { O as ObfuscationLayer } from './core-ihIEWmI5.js'; /** * Runtime detection helpers with no platform-specific imports. * * @module adapters/runtime */ /** 감지된 런타임 환경 식별자 */ type RuntimeId = "node" | "browser" | "edge" | "deno" | "bun" | "unknown"; /** * 현재 JavaScript 런타임 환경을 감지합니다. * * 감지는 순수하게 globalThis 검사에 기반하며 Node.js 내장 모듈을 임포트하지 않습니다. */ declare function detectRuntime(): RuntimeId; /** * 한글 음절 난독화 레이어 구현. * * 암호화된 charset 인코딩 문자열을 결정론적 전단사 매핑을 사용하여 * 자연스러운 한국어 음절 블록으로 변환합니다. 매핑은 다음을 보장합니다: * - 모든 출력 문자가 유효한 한국어 음절 블록 (U+AC00–U+D7A3) * - 단일 문자 빈도가 기대 균등 빈도의 3배를 초과하지 않음 * - 출력 길이 <= 입력 길이의 1.5배 (실제로는 1:1 매핑) * * 플랫폼 독립적: Node.js 임포트 없음. * * @module obfuscation/ObfuscationLayer */ /** * 한글 음절 매핑을 사용하여 ObfuscationLayer 인터페이스를 구현합니다. * * 입력 알파벳(인코더가 사용하는 charset 문자)이 주어지면, * 이 레이어는 각 문자를 결정론적으로 한글 음절에 매핑합니다. * 매핑은 전단사(가역적)이며 위치에 따라 각 문자의 할당된 음절 범위를 * 순환하여 출력 빈도를 균등하게 분배합니다. */ declare class HangulObfuscationLayer implements ObfuscationLayer { private readonly config; /** * 새 HangulObfuscationLayer를 생성합니다. * * @param alphabet - 완전한 입력 알파벳 (charset 문자 + 패딩 문자). * 인코딩된 문자열에 나타날 수 있는 모든 고유 문자. */ constructor(alphabet: string[]); /** * 암호화된 charset 인코딩 문자열을 한글 음절로 변환합니다. * * 각 입력 문자는 할당된 범위의 한글 음절에 매핑됩니다. * 문자열 내 위치가 범위 내 어떤 음절을 사용할지 결정하여 * 균등한 빈도 분포를 보장합니다. * * @param input - 암호화된 charset 인코딩 문자열 * @returns 한글 음절 블록 문자열 (U+AC00–U+D7A3) * @throws 입력에 알파벳에 없는 문자가 포함된 경우 에러 */ obfuscate(input: string): string; /** * 난독화를 역변환하여 원본 charset 인코딩 문자열을 복원합니다. * * 각 한글 음절이 어떤 문자의 범위에 속하는지 판별하여 * 원래 문자로 매핑합니다. * * @param input - 난독화된 한글 음절 문자열 * @returns 원본 charset 인코딩 문자열 * @throws 입력에 유효한 한글 음절 범위 밖의 문자가 포함되거나 * 알파벳 문자에 매핑되지 않는 문자가 포함된 경우 에러 */ deobfuscate(input: string): string; } /** * Ddu64 인코더 출력과 호환되는 ObfuscationLayer를 생성합니다. * * charset/패딩 외에 footer 마커(ELYSIA/GRISEO/ENC/V3/V4)와 숫자(0-9)까지 알파벳에 * 포함하므로, 압축/암호화/파이프라인 마커가 붙은 실제 인코더 출력도 안전하게 * deobfuscate할 수 있습니다. * * 일반적으로는 `Ddu64`의 `obfuscate` 옵션을 쓰는 것으로 충분하며, 이 헬퍼는 인코더와 * 동일한 난독화 매핑을 외부에서 재현해야 할 때 사용합니다. * * @param charSet - 인코딩에 사용되는 charset 문자 * @param paddingChar - 패딩 문자 * @returns 인코더 호환 ObfuscationLayer 인스턴스 */ declare function createEncoderObfuscationLayer(charSet: string[], paddingChar: string): ObfuscationLayer; export { HangulObfuscationLayer as H, createEncoderObfuscationLayer as c, detectRuntime as d };