dsa
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| dsa [2025/01/22 15:06] – lss | dsa [2025/12/01 11:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| < | < | ||
| Tomislav je napisao aplikaciju za verifikaciju digitalnih potpisa. | Tomislav je napisao aplikaciju za verifikaciju digitalnih potpisa. | ||
| - | |||
| Želi da pregledaš izvorni kod i testiraš je li nekako moguće zaobići verifikaciju. | Želi da pregledaš izvorni kod i testiraš je li nekako moguće zaobići verifikaciju. | ||
| - | Dostupan ti je izvorni kod programa, a na njegov servis se možete spojiti | + | Dostupan ti je izvorni kod programa, a na njegov servis se možete spojiti naredbom: |
| - | + | nc chal.platforma.hacknite.hr 13011 ako koristite Linux, ili naredbom: | |
| - | naredbom nc chal.platforma.hacknite.hr 13011 ako koristite Linux odnosno | + | telnet chal.platforma.hacknite.hr 13011 ako koristite Windows |
| </ | </ | ||
| Line 50: | Line 49: | ||
| - | def euklidov_prosireni(a, | + | def euklidov_prosireni(a, |
| - | | + | if a == 0: |
| - | return (b, 0, 1) | + | return (b, 0, 1) |
| - | | + | else: |
| - | g, y, x = euklidov_prosireni(b % a, a) | + | g, y, x = euklidov_prosireni(b % a, a) |
| - | return (g, x - (b // a) * y, y) | + | return (g, x - (b // a) * y, y) |
| - | def modinverz(a, | + | def modinverz(a, |
| - | | + | g, x, y = euklidov_prosireni(a, |
| - | | + | return x % m |
| </ | </ | ||
| Line 67: | Line 66: | ||
| Ono što je bitno, jest da će funkcija vratiti 0 ako multiplikativni modularni inverz nije definiran. Funkcija će vratiti nulu za 0 i //q// (koji nisu dozvoljeni), | Ono što je bitno, jest da će funkcija vratiti 0 ako multiplikativni modularni inverz nije definiran. Funkcija će vratiti nulu za 0 i //q// (koji nisu dozvoljeni), | ||
| - | To znači da ako vrijednost parametra //s// postavimo na //2*q// tada će vrijednost varijable //w// biti 0, što pak znači da će i vrijednost varijabli //u1// i //u2// također biti 0, a vrijednost varijable v biti 1. Kako bi verifikacija prošla, //v// mora biti jednak //r// . Vrijednost //r// možemo postaviti na 1, tako da zadatak možemo riješiti postavljanjem vrijednosti //r// na 1 a vrijednosti //s// na //2*q// , a u poruci m napišemo " | + | To znači da ako vrijednost parametra //s// postavimo na //2*q// tada će vrijednost varijable //w// biti 0, što pak znači da će i vrijednost varijabli //u1// i //u2// također biti 0, a vrijednost varijable v biti 1. Kako bi verifikacija prošla, //v// mora biti jednak //r// . Vrijednost //r// možemo postaviti na 1, tako da zadatak možemo riješiti postavljanjem vrijednosti //r// na 1, a vrijednosti //s// na //2*q// , a u poruci m napišemo " |
dsa.1737558362.txt.gz · Last modified: 2025/12/01 11:40 (external edit)