Skrót i szum, zamiast hasła

Skrót i szum, zamiast hasła
0

Stworzyłem skrypt, który pozwala się logować inną metodą niż hasła - hash-em z szumem. Zachęcam do przeczytania o mojej metodzie.

http://www.dobreprogramy.pl/Hashe-z-soli-i-szyfr-cezara,Blog,68274.html

Dodatkowo metoda wykorzystuje szyfr cezara. Szyfr cezara można złamać metodą statystyczną, ale ponieważ szyfr cezara wykorzystuje się w odpowiedzi, a w zapytaniu, jak i w odpowiedzi wykorzystywany jest szum, to mnie zastanawia, jak szybko uda się złamać.

Od jutra, codziennie będę publikować po trzy zapytania i trzy poprawne odpowiedzi na te zapytanie. Chodzi o odgadnięcie klucza. Nagrodą jest satysfakcja, że jest się dobrym matematykiem.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Nie wygląda to dobrze.

  1. Szyfr Cezara nazywa się szyfrem tylko ze względów historycznych. Dzisiaj można go bardzo łatwo złamać.
  2. nie widać dokładnie co kto komu przesyła
  3. opisujesz 3 strony wymiany: komputer, serwer, klient. Trochę to mylące
  4. nie analizowałem dokładnie, ale trochę to wygląda jak zwykły challenge-response, który jest znany od wielu lat (hasła: SCRAM, CRAM, OCRA, RFC 6287)
0

Za wikipedią, challange-response jest również zwyczajne hasło, a więc porównywanie wydaje mi się bez sensu. Jest to z pewnością challange-response, ale lepsze porównanie to captcha.

Swój wpis blogowy podzieliłem na dwie części - generowanie zapytania, a także kroki, jakie musi wykonać użytkownik.

PS: Czy są gdzieś wykorzystywane podane przez Ciebie przykłady podobnych rozwiązań? Ja chcę stworzyć serwis OpenID lub podobnego rozwiązania i oczywiście połączyć moją metodę z hasłem, by klucz był szyfrowany dodatkowo hasłem(w pierwszym kroku byłoby przesyłane hasło, a następnie generowane byłoby zapytanie).

Nie interesowałem się zbytnio challenge-response, ale moja metoda polega na tym, że serwer, jak i klient wykonują podobne operacje. Klient musi dodatkowo jednak przetłumaczyć cyfry.

pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:20 dni
  • Lokalizacja:Kraków
  • Postów:1055
0

Powiedz mi jakie widzisz wady w zapisywaniu hasła metodą salt + hash (którą btw nie Ty wymyśliłeś, a jest znana od dawna) i dlaczego tak kombinujesz. Poza tym "szyfruje ją szyfrem cezara" to jakaś straszne tragedia jest.


do not code, write prose
edytowany 1x, ostatnio: pingwindyktator
0

Zapisywanie hasła metodą salt + hash dotyczy umieszczania haseł w bazie danych(o to Ci chodzi?), a mój pomysł trochę pomaga chronić hasło przed keylogerami. Oczywiście, że są portfele, ale nawet z portfela można wykraść hasło, a do portfela trzeba wprowadzić hasło.

Na kryptografii się słabo znam, a z matmy jestem taki sobie. Po prostu potrzebowałem takiego rozwiązania, więc je stworzyłem - nie rozpoznawałem obecnych metod. Po prostu nigdzie nie ma serwisu, który pozwalałby na stosowanie podobnej metody, a moją metodę można nauczyć się w godzinkę.

Z powodu braku wiedzy, to najpierw spytałem na forum.

Racja. Niefajne jest również to, że sól ma chyba dwa znaczenia:

  1. Liczba przekazana do generatora pseudolosowego - użyłem tego znaczenia
  2. Coś, co się dopina do hasła - tutaj użyłem przedrostek(przed czymś), wrost(między), końcówka(na końcu).

Przedrostek(w moim przypadku), to coś, co jest pomijane z początku zapytania
Wzrost, to coś, co jest pomijane ze środka zapytania
Końcówka, to coś, co jest pomijane z końca zapytania

W tym poście użyłem pojęcie zapytanie w sensie zapytanie generowane przez serwer do użytkownika(a nie do oprogramowania). Z zapytania użytkownik musi "wygenerować" odpowiedź, którą ma wprowadzić.

RE UP: Chodzi o sól do generatora pseudolosowego. Każdy użytkownik ma inną liczbę przekazywaną do generatora pseudolosowego. Jest to podyktowane tym, by utrudnić ataki na taki generator.

pingwindyktator
Przeanalizuje to niedługo i powiem co o tym myślę ale pierwsza myśl - ciężko czyta się artykuły techniczne, w których używane są polskie nazwy. Przedrostek, wrost, i końcówkę? zmienna sól? Niefajne. Druga uwaga: W przyszłości ograniczę także próbę błędnych logowań do trzech - po tym zmieniana będzie sól. Rozumiem, że chodzi o salt do haszowania hasła. W jaki sposób chcesz to zmienić nie znając hasła? Chyba, że ja czegoś nie rozumiem.
pingwindyktator
No tak. Teraz to już nic nie rozumiem z Twojego opisu ;D Trochę mi namieszałeś.
flowCRANE
@pingwindyktator - staraj się odpisywać w postach, bo łączenie postów jest męczące :P
pingwindyktator
@furious programming dobrze, że bana nie dostałem ;D #zycienakrawedzi
flowCRANE
Eee tam, za mało się starasz :)
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
0

Zanim zacznie się pisać o czymś taki to powinno się pogooglać znaleźć inne artykuły i poczytać jak ludzie razwiązują takie problemy.
Odkryłbyś, że szyfr cezara to odległa przeszłość.
Poczytaj np to: http://crypto.stanford.edu/PwdHash/pwdhash.pdf
albo jeszcze lepiej https://tools.ietf.org/html/rfc2617 (logowanie hasłem bez przekazania hasła przez sieć).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
0

RE UP: Wiem, że szyfr cezara można złamać metodami statystycznymi, ale ja go trochę umocniłem(prefix, infix, sufix). Co do logowania kodem na komórkę, to wg. mnie jest to nie do końca bezpieczne, a poza tym, to mało ludzi to stosuje. Są też specjalne chipy, które generują hasło po wprowadzeniu zapytania, ale taki chip można ukraść. Komórkę też można ukraść.

1037 9586 1800 5756 4663 19
http://www.twójid.pl/bogacz.php?action=super&answer=015859

1463 7840 1600 4698 4143 48
http://www.twójid.pl/bogacz.php?action=super&answer=013560195786962

9903 2404 0637 4300 7178 0731 2167 3
http://www.twójid.pl/bogacz.php?action=super&answer=00361013613211081029495

Co do pwdhash, to do hasła dodawana jest sól, jak w bazach danych. Czy sól jest zmienna? Zresztą, to chcę bronić użytkownika przed keylogerami i wścibskimi osobami, a nie chronić przesyłane dane. Poczytam dalej o Pwdhash.

Mój błąd - przyznaję się. W generatorach pseudolosowych nie jest wykorzystywana sól, a ziarno.

1

Z kim pan tak dyskutuje jak można zapytać?

flowCRANE
Połączyłem...
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
0

Ty nie masz pojęcia o tych sprawach. Naprawdę zanim zaczniesz pisać artykuły poczytaj coś poważnego na ten temat.
Ty ty sypiesz tylko frazesami, których nie rozumiesz.
Sam się na tym nie znam, ale wiem na tyle by powiedzieć ci wprost: skasuj ten artykuł, obecnie nie masz wiedzy ani umiejętności by o tym pisać.
Przeczytaj od dechy do dechy https://tools.ietf.org/html/rfc2617 (basic authentication możesz zignorować) i postaraj się to zrozumieć. To jest już metoda przestarzała, ale i tak o wiele lepsza od jakiekolwiek formy szyfru cezara.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: flowCRANE
0
MarekR22 napisał(a):

To jest już metoda przestarzała, ale i tak o wiele lepsza od jakiekolwiek formy szyfru cezara.

Ja rozumiem, żę szyfr cezara jest przestarzały, ale chodziło mi o coś, z czym poradzi sobie użytkownik.

Na pytanie kogoś innego, z kim dyskutuję, to ludzie edytują posty i dopiski do postów, a ja nie mogę, bo nie jestem zarejestrowany. Wiem, że wygląda to śmiesznie, ale cóż.

Chciałbym napisać, że wężyk w systemach mobilnych nie jest bezpieczniejszy od hasła, a mimo wszystko się przyjął.

PS: To, że nie znam się na kryptografii nie oznacza, że całkowicie nie mam pojęcia o czym piszę. Moja metoda miała chronić przed keylogerami i trochę spełnia te zadanie. Istnienie lepszych metod nie oznacza jeszcze, że nie mam pojęcia, o czym piszę.

0

8219 7677 0518 0012 3683 1390 24
http://www.twójid.pl/bogacz.php?action=super&answer=091425829271

8294 0191 8001 6942 1984
http://www.twójid.pl/bogacz.php?action=super&answer=01676497

1425 1894 7013 0075 7681 1484 4
http://www.twójid.pl/bogacz.php?action=super&answer=01401920309689968

Chyba kończę publikować kolejne pytania i odpowiedzi. Nie ma licznika odwiedzin na stronie, ale na tym forum brak jest odzewu.

msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:4 miesiące
2

Moja metoda to zmodyfikowany szyfr cezara. I tutaj rodzi się pytanie - ile podejrzeń komunikacji wystarczy, by odszyfrować klucz? Tego nie wiem, więc zwracam się z prośbą do was, byście złamali moją metodę, ale o tym na forum.

Zadanie wygląda na ciekawe (łamałbym :P. Chociażby żeby pokazać że ta metoda to zły pomysł), ale masz może przykładową implementację tego algorytmu? Brak odezwu może się brać stąd, że trudno powiedzieć jak dokładnie działa Twoja metoda, bo opis na dobrychprogramach jest chaotyczny (moim zdaniem), a żeby próbować ją atakować trzeba wiedzieć dokładnie co się tam dzieje.

Na pytanie kogoś innego, z kim dyskutuję, to ludzie edytują posty i dopiski do postów, a ja nie mogę, bo nie jestem zarejestrowany. Wiem, że wygląda to śmiesznie, ale cóż.

Sugestia: zarejestruj się.

edytowany 2x, ostatnio: msm
NI
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 godzin
  • Postów:34
0

Ok. W takim razie opublikuję źródła. Co do domeny: twójid.pl ze skryptem bogacz.php . Odpowiedź podaje się następująco:

Kopiuj
twójid.pl/bogacz.php?action=super&answer=<odpowiedź>

Opublikowałem źródła (link na stronie bogacz.php).

edytowany 4x, ostatnio: flowCRANE
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Ten twój kod sprawdzający to jest jeden wielki WTF i if oriented programming. W zasadzie nie bardzo wiadomo co ty tam chcesz walidować. To jest celowa obfuskacja czy po prostu napisałeś to po 2 dniach czytania kursu PHP? Generalnie twój opis to niezrozumiały bełkot (przykro mi, tak jest) a kod jest jeszcze gorszy. Nikt tego raczej nie tknie nawet kijem, nie dlatego że to super mocny algorytm, tylko ze strachu że się czymś zarazi...

Poza tym mam pewne wątpliwości co do jakiejkolwiek użyteczności tego algorytmu. W kodzie widzę że serwer generuje sobie losową liczbę segmentów a także losowe rozmiary tych paddingów. A w twoim opisie napisałeś że:
Zliczamy liczbę cyfr otrzymanego ciągu i odejmujemy od niej długość wrostu, przedrostku i końcówki. Wynik dzielimy przez dwa i dodajemy następnie do niego liczbę cyfr przedrostku. Więc skąd user zna te rozmiary paddingów? User zna przecież tylko i wyłącznie swoje hasło. Więc skąd ma wiedzieć ile wynosi ten infix, prefix i suffix w takim razie? Odnoszę wrażenie że nawet user znający hasło nie będzie sie w stanie tam zalogować :D Chyba ze jednak zakładasz że user zna i pamięta także te pozostałe wartości?

A tak BTW to to całe dodawanie paddingów przy generacji hasha jest bez sensu i mozesz je równie dobrze w ogóle wyrzucić. Bo co to niby daje że zamieniasz ciąg
abcd na 3XXXab4XXXXcd5XXXXX skoro wiadomo gdzie umieszczasz padding i że jego rozmiar jest tam zapisany? Jedyny efekt to zmniejszenie czytelności kodu, bo żadnego utrudnienia w łamaniu to nie dodaje.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 6x, ostatnio: Shalom
pingwindyktator
Wiem, że szyfr cezara można złamać metodami statystycznymi, ale ja go trochę umocniłem(prefix, infix, sufix). p4 drżyjcie.
NI
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 godzin
  • Postów:34
0

Użytkownik zna rozmiar przedrostku, wrostu i końcówki, ale oczywiście, że nie zna ich wartości - są one generowane.

Ten padding nie jest wcale znany, bo po wylosowaniu liczby jest zamieniany przez szyfr.

Przypuśćmy, że 3 => 2, 2 => 4, 1 => 5.
Serwer wypluł coś takiego

332323135678

Tak więc wygląda to tak, jeżeli chodzi o zainteresowanie - x oznacza śmieć
3xx3231xxxxx
Użytkownik może dać natomiast taką odpowiedź
134567342
Może również dać taką odpowiedź
319342

Gdybyśmy zdefiniowali, że 5 => 1, to poniższa odpowiedź będzie również poprawna
1245675432352
Braliśmy pod uwagę, że infix =0, sufix = 0, prefix = 0

edytowany 1x, ostatnio: nintyfan
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:20 dni
  • Lokalizacja:Kraków
  • Postów:1055
1

@nintyfan ja mam propozycje. Napisz to nam po ludzku, normalnym, technicznym językiem, daj przykład i będzie wszystko wiadomo.


do not code, write prose
flowCRANE
Koniecznie w postaci kodu do przetestowania;
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 10 godzin
0

ja chyba powoli wyczuwam perełkę


NI
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 godzin
  • Postów:34
0

Już teraz bym założył jakiś skrypt do dostarczania tożsamości OpenID lub czegoś podobnego, zintegrowanego z tym, co stworzyłem, ale bym chyba najpierw musiał się skomunikować z jakimś prawnikiem - trzeba ustalić regulamin.

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

zawsze jak czytam takie tematy mysle
"kurde nic nie rozumiem. Czytam trzeci raz i nadal zero... chyba jestem za glupi"
Oczywiscie mysle tak bo nie znam sie na temacie wiec nie wchodze w szczegoly za bardzo.
Ale jak prawie zawsze (99% przypadkow) to autor pisze tak, ze on chyba sam siebie nie rozumie...

NI
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 godzin
  • Postów:34
0
  1. Odczytujemy ziarno z bazy danych i je ustawiamy - każdy użytkownik ma własne ziarno - nie wiem czy to bezpieczne czy mniej bezpieczne - chodzi o wyeliminowanie ataków na generator liczb pseudolosowych
  2. Na początku generowana jest liczba segmentów
  3. Ustawiamy liczbę cyfr w ciągu na 0
  4. Pętla:
    3.1 Sprawdzamy czy liczba cyfr w ciągu nie przekracza pewnej ustalonej wartości
    3.1.1 tak: przechodzimy do 4
    3.2. Losowana jest liczba ilości(cyfra) cyfr nieistotnych dla obecnego segmentu
    3.3. Wylosowana ilość jest tłumaczona kluczem zapisanym w bazie danych
    3.4. Generowanych jest tyle cyfr, ile wynosi przetłumaczona cyfra
    3.5. Zwiększamy liczbę cyfr w ciągu o liczbę wygenerowanych cyfr w pkt. 3.4
    3.6. Wykonujemy kroki od 3.1 do 3.5, jednak dla cyfr istotnych
    3.7. Jeżeli nie wygenerowaliśmy wszystkich wymaganych segmentów, to przechodzimy do 3.1
  5. Mamy już ciąg do porównania - zapamiętujemy go
  6. Doklejamy z przodu tzw. prefix(odpowiednią liczbę cyfr wygenerowanych losowo - liczba ta przechowywana jest w bazie danych)
  7. Doklejamy z tyłu tzw. sufix(odpowiednią liczbę cyfr wygenerowanych losowo - liczba ta przechowywana jest w bazie danych)
  8. Doklejamy do środka tzw. infix(odpowiednią liczbę cyfr wygenerowanych losowo - liczba ta przechowywana jest w bazie danych)
  9. Oczywiście, że w punktach 5,6,7 generujemy te ciągi
  10. Prezentujemy ciąg uzyskany w punkcie 7 użytkownikowi

Tak wygląda generowanie ciągu zwróconego przez serwer(do przetransformowania przez użytkownika). Jutro opiszę, co musi zrobić użytkownik.

NI
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 godzin
  • Postów:34
0
  1. Użytkownik zlicza liczbę cyfr w ciągu zwróconym przez serwer
  2. Odejmuje od wyniku długość infiksu, sufiksu i prefiksu(nie chodzi o porządek czy drzewa oczywiście)
  3. Dzieli to przez dwa
  4. Jeżeli jest reszta z dzielenia, to dodaje jeden
  5. Dodaje długość prefiksu
  6. Dodaje jeden
  7. Odlicza ilość cyfr wyniku od lewej, zahaczając n wyrzucając n cyfr infiksu od odliczonej pozycji
  8. Zaczynamy od lewej strony, przesuwając się o x cyfr prefiksu
    9. Teraz pobieramy pierwszą cyfrę i tłumaczymy ją, otrzymując liczbę cyfr do przeskoczenia
  9. Przeskakujemy taką liczbę cyfr
  10. Następnie pobieramy kolejną cyfrę, otrzymując liczbę cyfr to przetłumaczenia
  11. Wybieramy losową cyfrę, tłumacząc ją otrzymujemy liczbę cyfr szumu, jaką musimy podać
  12. Podajemy liczbę cyfr prawidłowych przed przetłumaczeniem(możemy także skorzystać z bardziej wyrafinowanego algorytmu, podając mniejszą liczbę cyfr, ale dla uproszczenia przyjąłem, że będzie to pobrana cyfra)
  13. Tłumaczymy y cyfr, gdzie y to pobrana liczba
  14. Przechodzimy do punktuj 9, jeżeli nie ma cyfr z prawej nie należących do sufiksu
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)