@ddunigma/node
Version:
90 lines (85 loc) • 3.94 kB
text/typescript
import { O as ObfuscationLayer } from './core-ihIEWmI5.cjs';
/**
* 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 };