@tatil/crypto
v0.0.3
Published
Tatilsepeti Crypto utilities for encryption and decryption
Keywords
Readme
@tatil/crypto
Tatilsepeti projeleri için şifreleme ve deşifreme işlemlerini içeren paket.
Özellikler
API-Based Encryption/Decryption (Client-Side)
- Reservation ID şifreleme/deşifreleme
- API endpoint üzerinden işlem yapar
- Client-side kullanım için uygun
Local AES-256 Encryption (Server-Side)
- AES-256-CBC algoritması
- Gzip compression ile veri sıkıştırma
- URL-safe base64 encoding
- Server-side sadece (Node.js crypto module)
Kurulum
yarn add @tatil/cryptoKullanım
API-Based Encryption (Client-Side)
import { encryption, decryption } from '@tatil/crypto';
// Reservation ID şifreleme
const encryptedId = await encryption(12345);
// Reservation ID deşifreleme
const decryptedId = await decryption('encrypted_string_here');Local AES-256 Encryption (Server-Side)
import { encrypt, decrypt } from '@tatil/crypto';
// Veri şifreleme
const data = { userId: 123, email: '[email protected]' };
const encrypted = await encrypt(data);
// Sonuç: "base64_encoded_string"
// Veri deşifreleme
const decrypted = await decrypt(encrypted);
// Sonuç: { userId: 123, email: '[email protected]' }Environment Variables
CRYPTO_SECRET_KEY=your_32_byte_secret_key_hereÖnemli: encrypt ve decrypt fonksiyonları için CRYPTO_SECRET_KEY environment variable'si gereklidir.
API Reference
encryption(value)
Reservation ID'yi şifreler (API tabanlı)
- Parametreler:
value(string|number) - Şifrelenecek değer - Dönüş: Promise - Şifrelenmiş değer
- Kullanım: Client-side
decryption(value)
Şifrelenmiş Reservation ID'yi çözer (API tabanlı)
- Parametreler:
value(string|number) - Çözülecek şifreli değer - Dönüş: Promise - Çözülmüş sayısal değer
- Kullanım: Client-side
encrypt(data, secretKey?)
Veriyi AES-256-CBC ile şifreler (Yerel)
- Parametreler:
data(Object|string) - Şifrelenecek verisecretKey(string, optional) - Gizli anahtar (default: process.env.CRYPTO_SECRET_KEY)
- Dönüş: Promise - Base64 encoded şifreli veri
- Kullanım: Server-side only
decrypt(encryptedData, secretKey?)
Şifrelenmiş veriyi çözer (Yerel)
- Parametreler:
encryptedData(string) - Şifreli veri (base64)secretKey(string, optional) - Gizli anahtar (default: process.env.CRYPTO_SECRET_KEY)
- Dönüş: Promise<Object|string> - Çözülmüş veri
- Kullanım: Server-side only
Bağımlılıklar
@tatil/client-api: API-based işlemler içincrypto(Node.js built-in): AES-256 şifreleme içinzlib(Node.js built-in): Gzip compression için
Örnek Kullanım Senaryoları
1. Reservation ID Şifreleme (URL'de güvenli taşıma)
// Client-side
import { encryption } from '@tatil/crypto';
const reservationId = 12345;
const encryptedId = await encryption(reservationId);
// URL oluşturma
const url = `/reservation/${encodeURIComponent(encryptedId)}`;2. Server-Side Veri Şifreleme
// Server component veya API route
import { encrypt, decrypt } from '@tatil/crypto';
// Hassas veriyi şifreleme
const userData = {
id: 123,
email: '[email protected]',
phone: '+905551234567'
};
const encrypted = await encrypt(userData);
// Veriyi geri çözme
const decrypted = await decrypt(encrypted);3. Next.js API Route
// app/api/v5/crypto/route.js
import { encrypt, decrypt } from '@tatil/crypto';
import { createResponse, createErrorResponse } from '@tatil/server-api';
export const POST = async (request) => {
const { action, data } = await request.json();
if (action === 'encrypt') {
const encrypted = await encrypt(data);
return createResponse('success', encrypted);
}
if (action === 'decrypt') {
const decrypted = await decrypt(data);
return createResponse('success', decrypted);
}
};Lisans
MIT
İletişim
Sorularınız için: Yaşar İçli [email protected]
