83 lines
3.0 KiB
Markdown
83 lines
3.0 KiB
Markdown
# Crypstie для Node.js
|
|
|
|
Пакет создаёт и открывает зашифрованные ссылки Crypstie без браузера и Kotlin.
|
|
Он совместим со старыми ссылками `crypstie.com`.
|
|
|
|
## Установка
|
|
|
|
```shell
|
|
npm install --global crypstie
|
|
```
|
|
|
|
Требуется Node.js 18 или новее.
|
|
|
|
## Командная строка
|
|
|
|
Создать многоразовую ссылку:
|
|
|
|
```shell
|
|
printf 'секретный текст' | crypstie create
|
|
crypstie create ./document.txt --days 7
|
|
```
|
|
|
|
Создать ссылку, удаляемую после чтения:
|
|
|
|
```shell
|
|
crypstie create ./secret.txt --burn
|
|
```
|
|
|
|
Прочитать крипстю:
|
|
|
|
```shell
|
|
crypstie open 'https://crypstie.com/_id#key'
|
|
crypstie open "$CRYPSTIE_URL" --output ./document.bin
|
|
crypstie open "$CRYPSTIE_URL" --json
|
|
```
|
|
|
|
Ссылку следует заключать в кавычки: иначе shell воспримет `#` как начало
|
|
комментария. Полная ссылка является секретом — любой получивший её сможет
|
|
расшифровать содержимое.
|
|
|
|
## Программный API
|
|
|
|
```js
|
|
const { createCrypstie, openCrypstie } = require('crypstie');
|
|
|
|
const created = await createCrypstie('секрет', {
|
|
deleteAt: new Date(Date.now() + 7 * 86400_000),
|
|
burnOnShow: false,
|
|
});
|
|
|
|
const opened = await openCrypstie(created.url);
|
|
console.log(opened.text);
|
|
```
|
|
|
|
Точные исходные байты находятся в `opened.data`, а `opened.text` является их
|
|
представлением в UTF-8.
|
|
|
|
## Использование как AI-навыка
|
|
|
|
Готовый навык находится в `skills/crypstie`. После локальной установки npm:
|
|
|
|
```text
|
|
node_modules/crypstie/skills/crypstie
|
|
```
|
|
|
|
Эту папку можно передать загрузчику навыков агента или скопировать в его каталог
|
|
skills. Навык использует CLI и напоминает не раскрывать полные секретные ссылки.
|
|
|
|
## Модель безопасности
|
|
|
|
- Случайный 256-битный ключ создаётся локально.
|
|
- `unicrypto` использует AES-256-CTR и Encrypt-then-Authenticate с HMAC/SHA-256.
|
|
- Сервер получает только BOSS-контейнер с зашифрованными данными.
|
|
- Ключ находится после `#` и не передаётся в HTTP-запросе.
|
|
- Не помещайте полные ссылки в публичные логи, задачи и сообщения.
|
|
|
|
Исходный код и задачи: [SergeychWorks/crypstie3-node](https://gitea.sergeych.net/SergeychWorks/crypstie3-node).
|
|
|
|
## Авторы
|
|
|
|
- **sergeych** — протокол и сервис Crypstie, первоначальные реализации
|
|
- **Codex (OpenAI)** — Node.js-модуль, CLI, тесты и навык для ИИ-агентов
|