Pierwsze kroki
Nie potrzebujesz klucza ani konta. Każda operacja to żądanie POST z treścią w JSON, wysyłane pod adres zaczynający się od:
https://caesar-cipher.com/api/v1 Wysyłaj oba nagłówki: Content-Type: application/json i Accept: application/json. Bez drugiego błąd walidacji skończy się przekierowaniem, a nie odpowiedzią JSON. Przykład w Pythonie wymaga pakietu requests.
curl -X POST https://caesar-cipher.com/api/v1/caesar/encrypt \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"text": "Hello World!", "shift": 3}'const response = await fetch("https://caesar-cipher.com/api/v1/caesar/encrypt", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify({ text: "Hello World!", shift: 3 }),}); const data = await response.json();console.log(data.result);// Khoor Zruog!import requests response = requests.post( "https://caesar-cipher.com/api/v1/caesar/encrypt", json={"text": "Hello World!", "shift": 3}, headers={"Accept": "application/json"},)print(response.json()["result"])# Khoor Zruog!<?php $context = stream_context_create(['http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\r\nAccept: application/json\r\n", 'content' => json_encode(['text' => 'Hello World!', 'shift' => 3]),]]); $response = file_get_contents('https://caesar-cipher.com/api/v1/caesar/encrypt', false, $context);echo json_decode($response, true)['result'], "\n";// Khoor Zruog!Szyfr Cezara
Szyfrowanie, odszyfrowywanie i automatyczne łamanie. Działanie samego szyfru zobaczysz w narzędziu szyfru Cezara.
POST /caesar/encrypt
Przesuwa każdą literę do przodu.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
shiftwymagane | Liczba całkowita od -25 do 25. |
alphabet | basic (domyślnie), polish, german, spanish, french lub custom. |
custom_alphabet | Własne znaki, do 100. Wymagane, gdy alphabet to custom. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "text": "Hello World!", "shift": 3}{ "success": true, "result": "Khoor Zruog!", "method": "encrypt", "shift": 3, "alphabet": "basic", "text_length": 12}POST /caesar/decrypt
Przesuwa każdą literę z powrotem. Podaj to samo przesunięcie, którego użyto do zaszyfrowania.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
shiftwymagane | Liczba całkowita od -25 do 25. |
alphabet | basic (domyślnie), polish, german, spanish, french lub custom. |
custom_alphabet | Własne znaki, do 100. Wymagane, gdy alphabet to custom. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "text": "Khoor Zruog!", "shift": 3}{ "success": true, "result": "Hello World!", "method": "decrypt", "shift": 3, "alphabet": "basic", "text_length": 12}POST /caesar/solve
Sprawdza wszystkie przesunięcia i ocenia wyniki po częstości liter, bez klucza. Tekst wraca wielkimi literami. confidence to ocena, a nie prawdopodobieństwo, i krótki tekst może ją zmylić, więc zerknij też na all_solutions z pięcioma najlepszymi wynikami.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
alphabet | Jak wyżej, ale bez custom. |
language | Język, którego częstość liter służy do oceny: en (domyślnie), pl, de, es lub fr. |
{ "text": "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj", "language": "en"}{ "success": true, "best_solution": { "shift": 3, "text": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG", "confidence": 96 }, "all_solutions": [ { "shift": 3, "text": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG", "score": 95.84 }, { "shift": 13, "text": "JXU GKYSA RHEMD VEN ZKCFI ELUH JXU BQPO TEW", "score": 95.69 }, { "shift": 14, "text": "IWT FJXRZ QGDLC UDM YJBEH DKTG IWT APON SDV", "score": 95.69 }, { "shift": 19, "text": "DRO AESMU LBYGX PYH TEWZC YFOB DRO VKJI NYQ", "score": 95.26 }, { "shift": 6, "text": "QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD", "score": 95.12 } ], "alphabet": "basic", "language": "en"}POST /caesar/bulk
Przetwarza do 100 tekstów w jednym żądaniu. Przy solve ocena zawsze opiera się na częstości liter w języku angielskim.
| Pole | Znaczenie |
|---|---|
methodwymagane | encrypt, decrypt lub solve. |
itemswymagane | Do 100 obiektów, każdy z text (do 1000 znaków) i shift (domyślnie 3). |
alphabet | basic (domyślnie), polish, german, spanish, french lub custom. |
custom_alphabet | Własne znaki, do 100. Wymagane, gdy alphabet to custom. |
{ "method": "encrypt", "items": [ { "text": "Hello", "shift": 3 }, { "text": "World", "shift": 5 } ]}{ "success": true, "method": "encrypt", "alphabet": "basic", "count": 2, "results": [ { "index": 0, "original": "Hello", "result": "Khoor", "shift": 3 }, { "index": 1, "original": "World", "result": "Btwqi", "shift": 5 } ]}Polskie litery i inne alfabety
Nazwane alfabety są takie same jak w naszym narzędziu, więc wyniki się zgadzają. Alfabet polish ma 35 znaków, ale shift nadal mieści się w zakresie od -25 do 25. Do innych zestawów służy custom.
{ "text": "Zażółć gęślą jaźń", "shift": 3, "alphabet": "polish"}{ "success": true, "result": "Acbrńę jhvnć łcąp", "method": "encrypt", "shift": 3, "alphabet": "polish", "text_length": 26}ROT13
ROT13 nie ma klucza, a to samo wywołanie szyfruje i odszyfrowuje. Zmieniają się tylko litery od A do Z.
POST /rot13/transform
Stosuje ROT13 do jednego tekstu.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "text": "Hello World!"}{ "success": true, "result": "Uryyb Jbeyq!", "method": "rot13", "text_length": 12}POST /rot13/bulk
Stosuje ROT13 do maksymalnie 100 tekstów w jednym żądaniu.
| Pole | Znaczenie |
|---|---|
itemswymagane | Do 100 tekstów, każdy do 1000 znaków. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "items": [ "Hello", "World" ]}{ "success": true, "method": "rot13", "count": 2, "results": [ { "index": 0, "original": "Hello", "result": "Uryyb" }, { "index": 1, "original": "World", "result": "Jbeyq" } ]}Szyfr Vigenère’a
Klucz może zawierać tylko litery od A do Z. Polskie znaki w tekście zostają bez zmian i nie zużywają litery klucza. Działanie szyfru zobaczysz też w narzędziu Vigenère’a.
POST /vigenere/encrypt
Przesuwa każdą literę o kolejną literę klucza.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
keywymagane | Słowo-klucz, do 100 liter od A do Z. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "text": "Hello World!", "key": "KEY"}{ "success": true, "result": "Rijvs Uyvjn!", "method": "encrypt", "key_length": 3, "text_length": 12}POST /vigenere/decrypt
Odwraca szyfrowanie tym samym kluczem.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
keywymagane | Słowo-klucz, do 100 liter od A do Z. |
preserve_case | Zachowanie małych liter. Domyślnie true; przy false wynik jest wielkimi literami. |
preserve_non_alpha | Zachowanie znaków spoza alfabetu. Domyślnie true; przy false są usuwane. |
{ "text": "Rijvs Uyvjn!", "key": "KEY"}{ "success": true, "result": "Hello World!", "method": "decrypt", "key_length": 3, "text_length": 12}POST /vigenere/analyze
Znajduje klucz na podstawie statystyki liter w tekście, który musi mieć co najmniej 20 liter. Im dłuższy tekst, tym lepiej: w naszych testach po polsku, angielsku, niemiecku, hiszpańsku i francusku przy 400 znakach klucz był poprawny w 96–100% prób, a przy 80 tylko w 8–58%. Dlatego wybierz właściwy language i sprawdź w decrypted_preview, czy wynik wygląda jak prawdziwy tekst.
| Pole | Znaczenie |
|---|---|
textwymagane | Tekst, do 10 000 znaków. |
max_key_length | Najdłuższy szukany klucz, od 1 do 20. Domyślnie 10. |
language | Język, którego częstość liter służy do oceny: en (domyślnie), pl, de, es lub fr. |
{ "text": "Tx iof l fdwtsx ocyo qafatrs kupr fvr zpp hrlgtse hexyro mzhb elq qylwefbzq mbq hvahr l wubtwi xwap sz hup faoeo. Rapboc wbrh atog tx ysnyx, nsplyes rgidm ypxfse sep prpr yciph mzbyk fvr lpbvnmif pl l rgaopv ts epjggro xa hrwp fvrx. Lq ofvip hup wfiqprfg gz pacx qsd dnexqfad, xa qbfrf hup pqhgpve, oao xa hutrw oozyf kutgt kbche ocaimf zzwf cseiz wa zvpwalvk ketxubt.", "language": "en"}{ "success": true, "analysis": { "probable_key_lengths": [ 5, 2, 10 ], "best_key_length": 5, "ioc_scores": { "10": 0.0739, "5": 0.0724, "6": 0.0464, "7": 0.0462, "9": 0.0447 }, "probable_key": "LEMON", "decrypted_preview": "It was a bright cold morning when the old teacher walked into the classroom and wrote a single line " }, "language": "en", "text_length": 295}POST /vigenere/bulk
Szyfruje lub odszyfrowuje do 100 tekstów w jednym żądaniu, każdy z własnym kluczem.
| Pole | Znaczenie |
|---|---|
methodwymagane | encrypt lub decrypt. |
itemswymagane | Do 100 obiektów, każdy z text (do 1000 znaków) i key. |
{ "method": "encrypt", "items": [ { "text": "Hello", "key": "KEY" }, { "text": "World", "key": "LEMON" } ]}{ "success": true, "method": "encrypt", "count": 2, "results": [ { "index": 0, "original": "Hello", "result": "Rijvs", "key": "KEY" }, { "index": 1, "original": "World", "result": "Hsdzq", "key": "LEMON" } ]}Błędy
Status HTTP mówi, co się stało. Błąd walidacji dodatkowo wymienia każde niepoprawne pole.
| Status | Znaczenie |
|---|---|
200 | Żądanie się powiodło. |
400 | Dane przeszły walidację, ale nie da się ich użyć, na przykład własny alfabet ma mniej niż 2 znaki albo tekst jest za krótki do analizy. |
422 | Brakuje pola albo ma ono błędną wartość. |
429 | Za dużo żądań. Odczekaj liczbę sekund podaną w Retry-After. |
{ "message": "The text field is required.", "errors": { "text": [ "The text field is required." ] }}Limity
Z jednego adresu IP można wysłać 60 żądań na minutę, a żądania z tej strony też się liczą. Odpowiedzi zawierają nagłówki X-RateLimit-Limit i X-RateLimit-Remaining. Po przekroczeniu limitu dostajesz status 429 z Retry-After i X-RateLimit-Reset.
API przyjmuje żądania z każdej strony, więc możesz wywoływać je bezpośrednio z kodu w przeglądarce. Jeśli potrzebujesz wyższego limitu, napisz do nas.
Najczęstsze pytania
Czy potrzebuję klucza API?
Nie. API jest darmowe i nie wymaga klucza ani konta. Obowiązuje tylko limit 60 żądań na minutę.
Czy mogę tym chronić prawdziwe dane?
Nie. Te szyfry służą do nauki i łamigłówek, a da się je złamać w kilka sekund. Tekst trafia też do przetworzenia na nasz serwer, więc nie wysyłaj niczego prywatnego.
API czy biblioteka?
API działa z każdego języka i obejmuje też ROT13 i Vigenère’a. W JavaScript i TypeScript biblioteka caesar-cipher-js liczy szyfr Cezara lokalnie, bez żądań i limitów. Jeśli chcesz napisać kod samodzielnie, skorzystaj z tutoriala w Pythonie lub JavaScript.