Zadanie dla geniusza
Adam: Mam zadanie dla matematyków. Kto rozwiąże je.
A więc..Jakaś fraza, zdanie została zakodowana w liczbach, jest to pewna sekwencja,
rozkodujesz
761269 12766547 82039649 53739689 2994919 22579 83683
650729 402733 402733 3048371 3048371 319373 3167371
30232117 3048371 3150487 2037839 22579 364547 2834761
84923 2211421 120569929 7189583 495917 3167371 70100689
20201263 731099 2969077 31244849 6453583 650729 4630127
6869651 625357 1204601 1100371 120457 131867 597851
546121 385019 3048371 51997837 6869651 51791 99763
1859761 27576671 133511713 3150487 631973 743569
10 lip 16:25
Bleee:
Zrób sobie programik do łamania kodów i się pobaw
10 lip 16:26
Adam: Gdybym potrafił to zrobić to bym zrobił.
Jak by ktoś coś wiedział jakieś wskazówki, wielkie
dzięki
10 lip 16:28
Bleee:
A zdanie to:
Mam gdzieś zadania podawane przez trolla.
Ta emotka na końcu także jest zakodowana.
10 lip 16:29
Adam: Daję słowo że to zadanie, proszę o pomoc..
10 lip 16:30
Adam: Piszę prawdę, gram w pewną grę i potrzebuję rozkodować zadanie, a z matmy byłem kiepski.
Więc jeśli ktoś wie o co chodzi z góry dziękuję za wskazówki. Podaje linka do strony z
zadaniem.
https://satoshistreasure.xyz/numeric
10 lip 16:43
r: @Bleee
to się popisałeś
10 lip 16:48
Adam: Staram się to rozkodować
10 lip 16:51
Adam: OK ZAMYKAM TEMAT.
JAK MI SIĘ UDA ROZKODOWAĆ TO NAPISZE.
JAK BĘDĘ MIAŁ INNE ZADANIA Z CHĘCIĄ SIĘ PODZIELĘ.
POZDRAWIAM
10 lip 17:16
Adam: Chyba, że komuś się uda to rozszyfrować to proszę napisać rozwiązanie i wytłumaczenie.
Pozdrawiam. Miłego dnia
10 lip 17:31
Bleee:
Adam − w tego typu grach rozwiązanie najwcześniej nawiązuje do poprzednich (już rozwiązanych)
zagadek.
Zauważ także ze nie podałeś baaardzo ważnej informacji − że fraza będzie w języku angielskim
10 lip 17:33
Adam: Dzięki. No tak angielski, myślałem że nie ma to znaczenia... Dziękuję za wskazówkę
10 lip 17:49
Bleee:
Ma to o tyle znaczenie, że w polskim języku jest praktycznie niespotykane aby były dwie litery
obok siebie.
Druga sprawa − ile kluczy zdobyłes?
10 lip 17:59
10 lip 18:05
Adam: 11 kluczy, to jest zabawa, nad tym pracują większe umysły i mają i 50% więcej kluczy,
więc jest to zabawa
Każdy może się przyłączyć :
10 lip 18:10
Adam: Wracając do zadania, jak mi się uda rozszyfrować to napiszę odpowiedz,
bo chyba w jakimś stopniu jest to zadanie matematyczne
10 lip 18:18
Mariusz:
Adam Blee tylko udaje geniusia a tak naprawdę jest dość przeciętnym matematykiem
Nawet do Rejewskiego mu sporo brakuje
11 lip 01:08
Adam: A ja pomyslalem ruszulem trochę głową i jest to szyfr prawdopodobnie Rsa.
Wybieramy losowo dwie duże liczby pierwsze p i q (najlepiej w taki sposób, aby
obie miały zbliżoną długość w bitach, ale jednocześnie były od siebie odległe wartościami –
istnieją
lepsze mechanizmy faktoryzacji, jeżeli liczba ma dzielnik o wartości bliskiej
Obliczamy wartość n = pq
Obliczamy wartość funkcji Eulera dla n: {\displaystyle \varphi (n)=(p−1)(q−1)} \varphi
(n)=(p−1)(q−1)
Wybieramy liczbę e (1 < e < φ(n)) względnie pierwszą z φ(n)
Znajdujemy liczbę d, gdzie jej różnica z odwrotnością modularną liczby e jest podzielna przez
φ(n) :
d ≡ e−1 (mod φ(n))
Ta liczba może być też prościej określona wzorem:
d⋅e ≡ 1 (mod φ(n))
Klucz publiczny jest definiowany jako para liczb (n, e), natomiast kluczem prywatnym jest para
(n, d).
Zanim zaszyfrujemy wiadomość, dzielimy ją na bloki {\displaystyle m} m o wartości liczbowej nie
większej niż n,
a następnie każdy z bloków szyfrujemy według poniższego
Niech {\displaystyle CK1,DK1,CK2,DK2}
C{K1},D{K1},C{K2},D{K2} będą kolejno szyfrowaniem i deszyfrowaniem
kluczami K1 i K2. Wtedy zachodzi:
{\displaystyle CK1\left(CK2(M)\right)=CK2\left(CK1(M)\right)}
C{K1}\left(C{K2}(M)\right)=C{K2}\left(C{K1}(M)\right) − przemienność
operacji szyfrowania
{\displaystyle DK1\left(DK2(M)\right)=DK2\left(DK1(M)\right)}
D{K1}\left(D{K2}(M)\right)=D{K2}\left(D{K1}(M)\right) − przemienność
operacji deszyfrowania
11 lip 05:24
11 lip 05:26
Adam: Arytmetyka zegarowa
Niemal we wszystkich zastosowaniach matematyki w kryptografii (tak nazywa się nauka o szyfrach)
korzystamy z arytmetyki zegarowej, czyli działań na resztach. Oznacza to, że wynik działania
zastępujemy odpowiednią resztą. Oto przykład działań arytmetycznych na resztach modulo 12,
czyli resztach z dzielenia przez 12:
7 + 9 mod 12 = 16 mod 12 = 4,
3 · 7 mod 12 = 21 mod 12 = 9.
Z takim dodawaniem stykamy się przy obliczeniach godzin: dziewięć godzin po siódmej jest
czwarta. W arytmetyce zegarowej na każdym etapie rachunków daną liczbę można zastąpić
odpowiednią resztą. Na przykład
74 mod 12 = (72)2 mod 12 = 492 mod 12 = 12 mod 12 = 1.
Aby uniknąć ciągłego powtarzania symbolu mod, zazwyczaj tylko na końcu rachunków zaznaczamy, o
jakie reszty chodzi:
74 = (72)2 = 492 = 12 = 1 mod 12.
11 lip 05:31
Adam: Zadanie rozwiązane kod pytkona:
# from
https://satoshistreasure.xyz/numeric
texto = 'A phrase has been encoded and hidden in the numbers below. Decipher this sequence to
unlock a Key'
print (texto)
numeros = [int(x) for x in '761269 12766547 82039649 53739689 2994919 22579 83683 650729 402733
402733 3048371 3048371 319373 3167371 30232117 3048371 3150487 2037839 22579 364547 2834761
84923 2211421 120569929 7189583 495917 3167371 70100689 20201263 731099 2969077 31244849
6453583 650729 4630127 6869651 625357 1204601 1100371 120457 131867 597851 546121 385019
3048371 51997837 6869651 51791 99763 1859761 27576671 133511713 3150487 631973
743569'.split()]
#numeros aparecidos en el mensaje.
print(numeros)
#Cada numero es una multiplicacion de dos numeros #primos.
# 761269=809*941,12766547=941*13567,#82039649=13567*6047, etc...
# lista ordenada de las 20 numeros primos que #aparecen.
# 67 163 337 491 521 613 739 773 809 941 1213 1249 #1489 5167 5441 5851 6047 8887 13567 22079
#iniciamos la lista de numeros primos
primo = 809
primos
lista = [primo]
#recoremos todos los numeros factorizando los en una lista de primos.
for k in numeros:
primo = int(k / primo)
primos
lista.append(primo)
#optenemos la lista de primos en su lugar correspondiente en la frase.
print(primos
lista)
# A cada primo ordenado le asignamos una letra,
# como no hay para todas eliminamos las menos frecuentes, k,q,v,w,x,z
codigo = {
67: 'a', 163: 'b', 337: 'c', 491: 'd', 521: 'e', 613: 'f', 739: 'g', 773: 'h', 809: 'i', 941:
'j', 1213: 'l', 1249: 'm', 1489: 'n', 5167: 'o', 5441: 'p', 5851: 'r', 6047: 's', 8887: 't',
13567: 'u', 22079: 'y' }
#realizamos la conversion del numero primo por su letra.
print(''.join([codigo[x] for x in primos
lista]))
# Many thank's to @epi
x for his brilliant idea of the code...
14 lip 07:13