Karty kredytowe

Category: Tylko Wtedy
17 lutego 2021

Większość z nas ma przy sobie karty kredytowe i karty bankomatowe. Te zazwyczaj mają szesnaście cyfr z przodu. Te cyfry to unikalny numer konta dla karty. Z oczywistych powodów dowolne szesnaście cyfr nie będzie działać, są one zgodne ze schematem.

Oto fikcyjna karta, którą wymyśliłem:

Kilka pierwszych znaków numeru karty opisuje rodzaj karty.

Niektóre karty to Visa, niektóre Mastercard, niektóre to American Express…

Po lewej stronie znajduje się (niewyczerpująca) lista niektórych powszechnych prefiksów kart.

Karty można rozpoznać po kilku pierwszych cyfrach (wypróbuj teraz, wyciągnij kilka kart z portfela i sprawdź je).

(Tutaj można znaleźć pełniejszą listę numerów identyfikacyjnych problemów)

Sprawdź cyfry

Numery kart kredytowych są często wpisywane, wprowadzane, przekazywane i cytowane. Cała ta transmisja może powodować błędy, zwłaszcza biorąc pod uwagę, że w grę wchodzą ludzie. Ludzie często popełniają błędy w przekazywaniu. Aby to zminimalizować, numery kart kredytowych zawierają cyfrę kontrolną.

W typowym szesnastocyfrowym numerze karty kredytowej pierwsze piętnaście cyfr jest określane przez bank wydający, ale ostatnia cyfra, nazywanacyfrą kontrolną, jest określana matematycznie na podstawie wszystkich pozostałych cyfr.

Nie wybierasz tej ostatniej cyfry, jest to deterministyczne. Dokładny wzór matematyczny dla jego generacji został wymyślony przezHansa Petera Luhna, inżyniera w IBM w 1954 roku. Pierwotnie opatentowany algorytm jest teraz w domenie publicznej i jest ogólnoświatową normą ISO / IEC 7812-1

Oczywiście za pomocą tylko jednej cyfry kontrolnej nie można wykryć wszystkich błędów (istnieje jedna na dziesięć szans, że liczba losowa ma poprawną cyfrę kontrolną), ale algorytm Luhna jest sprytny, ponieważ wykrywa każdypojedynczybłąd (uzyskuje nieprawidłowa cyfra), na przykład zamiana9na6w powyższym przykładzie. Wykrywa również prawie wszystkie * przełączenia parami dwóch sąsiednich liczb. Te błędy są typowymi typowymi błędami popełnianymi przez ludzi podczas transkrypcji numerów kart, więc cyfra kontrolna działa dobrze.

Dodatkową korzyścią uboczną jest to, że, jak omówiono powyżej, istnieje tylko jedna na dziesięć szans, że losowo wygenerowana liczba ma poprawną cyfrę kontrolną. Zapewnia to niewielką ochronę przed hakerami lub słabo wykształconymi oszustami, którzy mogą próbować losowo generować i odgadnąć numery kart kredytowych.

* Nie wykryje przełączenia z09na90(lub odwrotnie)

Algorytm Luhna

Algorytm Luhna opiera się na zasadzie arytmetykimoduloi pierwiastków cyfrowych.

Algorytm Luhna wykorzystuje matematykęmodulo-10.

Aby obliczyć cyfrę kontrolną, pomnóż każdą cyfrę pozycji parzystej (licząc od prawej) w liczbie przez dwa. Jeśli wynikiem jest liczba dwucyfrowa, dodaj te cyfry razem, aby utworzyć jedną cyfrę (nazywa się tocyfrowym pierwiastkiem).

Do tej sumy dodajemy następnie każdą cyfrę nieparzystej pozycji.

W rezultacie otrzymamy sumę (w naszym przykładzie = 67). Cyfra kontrolna to liczba, którą należy dodać do tej sumy, aby uzyskać następną wielokrotność 10. W naszym przypadku musielibyśmy dodać 3, aby uzyskać 70. Zatem cyfrą kontrolną dla tej fikcyjnej liczby jest 3.

(To jest to samo, co pytanie, jaką wartość musiałaby mieć cyfra kontrolna, aby sumamod 10 byłarówna zero. Jaką liczbę należy dodać do łańcucha, aby otrzymać sumę, która po podzieleniu przez 10 nie daje reszty. )

Wypróbuj sam!

Wpisz liczbę w polu poniżej i kliknij przycisk, aby przetestować:

Nie martw się, że liczby, które wpisujeszniesą nigdzie wysyłane (jeśli masz paranoję, możesz sprawdzić źródło strony, aby potwierdzić). Skrypt na stronie to wyłącznie test postronie klienta wcelu potwierdzenia poprawności cyfry kontrolnej. Jest to powszechna praktyka w branży. Wykonanie testu dymnego po stronie klienta, aby upewnić się, że wszystko jest dobrze uformowane przed przesłaniem na serwer, jest dobrym sposobem na zmniejszenie obciążenia serwera.

Inne zastosowania

Dodawanie cyfry kontrolnej jest bardzo powszechną praktyką, aby upewnić się, że liczby sądobrze sformułowanei nie popełniły błędu podczas prostego przepisywania lub niewyobrażalnego oszustwa.

Oto kilka innych popularnych liczb, które mają zapisane cyfry kontrolne (nie wszystkie używająalgorytmu Luhns; jest kilka innych popularnych systemów kodowania):

Samochodowe numery VIN, kody kreskowe, numery ISBN w książkach i czasopismach, australijskie numery podatkowe, węgierskie numery ubezpieczenia społecznego, kody rozliczeniowe banków amerykańskich…

Dla tych, którzy chcą dowiedzieć się więcej, istnieje kilka bardziej skomplikowanych algorytmów z cyframi kontrolnymi niż Luhn. Są to algorytm Verhoeffa (1969) i algorytm Damm (2004). Oferują one wszystkie zalety Luhna (wykrywanie dowolnego błędu jednocyfrowego), ale są również w stanie wykryćdowolnesąsiednie transpozycje cyfr w parach. Istnieją również systemy, które zostały rozszerzone, aby radzić sobie z błędami w tekście, a nie tylko w liczbach.

Parytet

Koncepcja cyfr kontrolnych istnieje od dawna. We wczesnych latach komputerów pamięć RAM nie była tak niezawodna, jak jest obecnie. Projektanci komputerów chcieli sposobu na wykrycie awarii sprzętu w pamięci.

Rozwiązaniem, które wymyślili, była koncepcja parytetu. Zliczono osiem bitów składających się na bajt. W rezultacie otrzymanonieparzystąliczbę bitów lubparzystąliczbę bitów. Na każdy bajt został wygenerowany jeden dodatkowy bit.Nazywało siętobitem parzystości.

Wartość tego bitu parzystości została ustalona na podstawie liczby ustawionych bitów i wybrana tak, aby (typowo) liczba bitów ustawiona na wartość 1 była parzysta. Nazywa się torównym parzystością.

(Równie możliwe jest skonfigurowanie systemu tak, aby utrzymywał nieparzystą liczbę bitów. Nazywa się tonieparzystą parzystością. Oba systemy są w pełni akceptowalne, po prostu wybierasz wersję, której będziesz używać, i trzymaj się jej!)

Za każdym razem, gdy odczytywano wartość, na poziomie sprzętowym, ponownie obliczano parzystość. Jeśli parzystość była nieprawidłowa, można wywołać błąd. Możesz wyraźnie zobaczyć, jak przełączaniedowolnegopojedynczego bitu (odwracanie jego stanu) mogłoby spowodować niepowodzenie parzystości.

Nie powie ciktórybit się nie powiódł, tylko ten jeden bit był zły (mógł to być nawet bit parzystości, który zawiódł!)

W dzisiejszych czasach chipy RAM stały się bardziej niezawodne, a większość nowoczesnych komputerów PC nie obsługuje pamięci RAM z kontrolą parzystości. Jednak serwery wysokiej klasy i komputery o znaczeniu krytycznym (banki, elektrownie…) nadal mają sprzętowe zabezpieczenie przez kontrolę parzystości. W rzeczywistości idą o krok dalej i wdrażają coś, co nazywa się ECC (pamięć kodów korekcyjnych błędów). Jak wspomniano powyżej, zwykła parzystość po prostu mówi ci, że coś jest nie tak (i ​​tylko wtedy, gdy jedna rzecz pójdzie nie tak), ale nie mówi ci co. Jest to niezwykle cenne, ale nie pomaga to w naprawianiu rzeczy. W tym miejscu pojawia się ECC…

Pamięć ECC działa w bardziej złożony sposób. Topaskiinformacji w poprzek bloku danych. Jest w stanie wykryć wszystkie błędy jednobitowe i większość błędów dwóch jednoczesnych bitów, ale co najważniejsze, jest w stanieskorygować każdy błąd jednobitowyi przywrócić poprawną wartość. Jest to bardziej złożone niż po prostu parzystość i wymaga wielu bitów parzystości na bajt (co czyni go droższym).

Zastosowana matematyka jest dość złożona i wykracza poza zakres tego artykułu, ale opiera się na koncepcji redundancji i matematycznego przechowywania informacji w więcej niż jednym miejscu. Jeśli chcesz bardziej się pochwalić, możesz zacząć tutaj od informacji o korekcji błędów Reeda-Solomona.

Aby pokazać podstawową koncepcję, wyobraź sobie poniższy scenariusz z jednąnieznanąinformacją. Jeśli możemy ufać wszystkim pozostałym bitom i wiemy, że używamy równej parzystości, jesteśmy w stanienaprawićbrakujący bit informacji (w takim przypadku brakujący bit musiałby być zerem).

Ostatnim przykładem zastosowania tej odporności na uszkodzenia z branży technologicznej jest technologia pamięci masowej RAID.

Wirujące dyski twarde, będące ruchomymi komponentami, są zazwyczaj najbardziej delikatnymi elementami systemów komputerowych. Podczas gdy świat szybko się rozwija, jesteś albo bardzo młody, masz dużo szczęścia, albo prowadziłeś bezpieczne życie, jeśli nie doświadczyłeś z pierwszej ręki jakiejś awarii dysku twardego.

Ponieważ dane przechowywane na dyskach twardych są zwykle dość cenne, potrzebujesz nadmiarowości w pamięci. Jednym z rozwiązań jest po prostu „dublowanie danych na równoległym zestawie dysków. To z pewnością działa, ale wymaga podwojenia wszystkich dysków.

Alternatywnym i nieco bardziej efektywnym kosztowo podejściem jest zastosowanie zasady parzystości i rozłożenie danych oraz parzystości na zbiór dysków. Teoria mówi, że chociaż jeden dysk może ulec awarii, prawdopodobieństwo awarii dwóch dysków w tym samym czasie jest niewielkie. Gdy jeden dysk zostanie wykryty jako uszkodzony, możesz polegać na nadmiarowości w systemie, aby kontynuować pracę podczas wymiany uszkodzonego dysku. Po zainstalowaniu nowego dysku można przywrócić parzystość i dane oraz ponownie zapewnić ochronę, a wszystko to bez przestojów.

RAID pierwotnie oznaczał „Nadmiarową macierz niedrogich dysków w odniesieniu do czasów, gdy dyski twarde były zarówno drogie, jak i mniej niezawodne niż obecnie. Zaprojektowana teoria polegała na budowaniu macierzy tanich dysków, wiedząc z góry, że prawdopodobnie będą regularnie ulegać awarii, ale dzięki zastosowaniu tańszych dysków, nadmiarowości i wymianie było to bardziej opłacalne niż kupowanie bardzo drogich dysków o nieco lepszej niezawodności.

To było trochę jak poleganie na siatce bezpieczeństwa.

W dzisiejszych czasach, dzięki niezawodności i ulepszeniom technologicznym, nadal mamy siatki bezpieczeństwa, ale to po prostu siatki bezpieczeństwa, a nie standardowa procedura operacyjna. Aby to odzwierciedlić, branża zmieniła definicję RAID na „Nadmiarowa tablica niezależnych dysków

Sprawdź inne interesujące artykuły na blogu tutaj.

Pełną listę wszystkich artykułów znajdziesz tutaj. Kliknij tutaj, aby otrzymywać powiadomienia e-mail o nowych artykułach.

We use cookies to provide you with the best possible experience. By continuing, we will assume that you agree to our cookie policy