Przejdź do treści

API szyfru Cezara

Darmowe endpointy JSON do szyfru Cezara, ROT13 i Vigenère’a, bez klucza i rejestracji. Wybierz jeden i wyślij prawdziwe żądanie prosto stąd.

reklama

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
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}'
JavaScript
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!
Python
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
<?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.

PoleZnaczenie
text
wymagane
Tekst, do 10 000 znaków.
shift
wymagane
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.
Żądanie
{    "text": "Hello World!",    "shift": 3}
Odpowiedź
{    "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.

PoleZnaczenie
text
wymagane
Tekst, do 10 000 znaków.
shift
wymagane
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.
Żądanie
{    "text": "Khoor Zruog!",    "shift": 3}
Odpowiedź
{    "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.

PoleZnaczenie
text
wymagane
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.
Żądanie
{    "text": "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj",    "language": "en"}
Odpowiedź
{    "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.

PoleZnaczenie
method
wymagane
encrypt, decrypt lub solve.
items
wymagane
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.
Żądanie
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "shift": 3        },        {            "text": "World",            "shift": 5        }    ]}
Odpowiedź
{    "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.

Żądanie
{    "text": "Zażółć gęślą jaźń",    "shift": 3,    "alphabet": "polish"}
Odpowiedź
{    "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.

PoleZnaczenie
text
wymagane
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.
Żądanie
{    "text": "Hello World!"}
Odpowiedź
{    "success": true,    "result": "Uryyb Jbeyq!",    "method": "rot13",    "text_length": 12}

POST /rot13/bulk

Stosuje ROT13 do maksymalnie 100 tekstów w jednym żądaniu.

PoleZnaczenie
items
wymagane
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.
Żądanie
{    "items": [        "Hello",        "World"    ]}
Odpowiedź
{    "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.

PoleZnaczenie
text
wymagane
Tekst, do 10 000 znaków.
key
wymagane
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.
Żądanie
{    "text": "Hello World!",    "key": "KEY"}
Odpowiedź
{    "success": true,    "result": "Rijvs Uyvjn!",    "method": "encrypt",    "key_length": 3,    "text_length": 12}

POST /vigenere/decrypt

Odwraca szyfrowanie tym samym kluczem.

PoleZnaczenie
text
wymagane
Tekst, do 10 000 znaków.
key
wymagane
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.
Żądanie
{    "text": "Rijvs Uyvjn!",    "key": "KEY"}
Odpowiedź
{    "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.

PoleZnaczenie
text
wymagane
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.
Żądanie
{    "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"}
Odpowiedź
{    "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.

PoleZnaczenie
method
wymagane
encrypt lub decrypt.
items
wymagane
Do 100 obiektów, każdy z text (do 1000 znaków) i key.
Żądanie
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "key": "KEY"        },        {            "text": "World",            "key": "LEMON"        }    ]}
Odpowiedź
{    "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.

StatusZnaczenie
200Żądanie się powiodło.
400Dane 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.
422Brakuje pola albo ma ono błędną wartość.
429Za dużo żądań. Odczekaj liczbę sekund podaną w Retry-After.
422
{    "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.