@ddunigma/node
Version:
96 lines (68 loc) • 3.27 kB
Markdown
[](https://www.npmjs.com/package/@ddunigma/node)
커스텀 charset을 사용하는 Base64 스타일 인코더/디코더 라이브러리입니다.
V2 추가사항
- 이제 한글 종성 결합 시스템을 활용하여 8개 기본 문자 × 8개 종성으로 64가지 조합을 만들어, 6비트를 한 글자로 표현합니다.
- Origin implementation by:
- [@i3ls](https://github.com/i3l3)
- [@gunu3371](https://github.com/gunu3371)
- Original Repository: [ddunigma](https://github.com/i3l3/ddunigma)
- Node.js >= 22.0.0
```bash
npm install @ddunigma/node
```
```typescript
import { Ddu64, DduSetSymbol } from "@ddunigma/node";
// V2 (기본, 한글 종성 결합 64개)
const ddu = new Ddu64();
ddu.encode("안녕하세요"); // "뎯땩잇땨뎪뎨잇잉뎯욱잇우뎯땨읶뎨뎯땩듂잊"
ddu.decode("뎯땩잇땨뎪뎨잇잉뎯욱잇우뎯땨읶뎨뎯땩듂잊"); // "안녕하세요"
// V1 (구버전 호환, 8개 문자 쌍 방식)
const dduV1 = new Ddu64({ dduSetSymbol: DduSetSymbol.DDU_V1 });
dduV1.encode("안녕하세요"); // ".우땨땨이?땨뜌.이.뜌이?이!.우우땨이?우뜌.우땨뜌이이.뜌.우땨땨!이이야"
dduV1.decode(".우땨땨이?땨뜌.이.뜌이?이!.우우땨이?우뜌.우땨뜌이이.뜌.우땨땨!이이야"); // "안녕하세요"
```
| 진입점 | 기능 | 용도 |
| ------------------------ | ---------------------------------------------- | ---------------------------- |
| `@ddunigma/node` | 인코딩 + 난독화, async encode/decode secure lazy | Node 기본 |
| `@ddunigma/node/browser` | 인코딩 + 난독화, async encode/decode secure lazy | 브라우저/Workers 기본 |
| `@ddunigma/node/secure` | sync/async 압축/암호화/체크섬/Web Streams | 배터리 명시 사용 |
| `@ddunigma/node/core` | 순수 인코딩/디코딩 | 최소 번들 |
```typescript
import { Ddu64 as NodeDdu64 } from "@ddunigma/node";
import { Ddu64 as BrowserDdu64 } from "@ddunigma/node/browser";
import { Ddu64 as SecureDdu64 } from "@ddunigma/node/secure";
import { Ddu64 as CoreDdu64 } from "@ddunigma/node/core";
```
```typescript
import { Ddu64 } from "@ddunigma/node";
const ddu = new Ddu64({ obfuscate: true });
const encoded = ddu.encode("재미있는 난독화");
const decoded = ddu.decode(encoded);
```
```typescript
import { Ddu64 } from "@ddunigma/node";
const ddu = new Ddu64({
compress: true,
encryptionKey: "my-secret-key",
keyDerivation: {
algorithm: "pbkdf2",
salt: "my-application-salt",
iterations: 600_000,
},
checksum: true,
});
const encoded = await ddu.encodeAsync("보호할 데이터");
const decoded = await ddu.decodeAsync(encoded);
```
동기 압축/암호화가 필요하면 `@ddunigma/node/secure`를 import하세요.
전체 옵션, 커스텀 charset, URL-Safe, Web Streams, `/core` 고급 사용법은
[](docs/REFERENCE.md)를 보세요.