Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #33526 > unrolled thread

Ile zajmie komputerowi mnożenie liczb rzędu 2^128

Started byosobliwy.nick@gmail.com
First post2019-12-03 15:19 -0800
Last post2020-05-27 14:03 -0700
Articles 12 on this page of 32 — 5 participants

Back to article view | Back to pl.comp.programming


Contents

  Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-03 15:19 -0800
    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 "Radoslaw Szwed" <radekszwed@pochta.fm> - 2019-12-04 10:41 +0100
      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 "Radoslaw Szwed" <radekszwed@pochta.fm> - 2019-12-04 11:55 +0100
        Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-04 03:43 -0800
          Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 Piotr Chamera <piotr_chamera@poczta.onet.pl> - 2019-12-04 13:25 +0100
            Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-04 04:46 -0800
    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 Piotr Chamera <piotr_chamera@poczta.onet.pl> - 2019-12-04 13:02 +0100
      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-04 04:55 -0800
        Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-04 16:19 -0800
          Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-04 18:11 -0800
            Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-04 18:12 -0800
            Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-05 01:17 -0800
              Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy.nick@gmail.com - 2019-12-05 12:18 -0800
                Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-07 13:17 -0800
                  Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-10 18:09 -0800
                    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-12 05:09 -0800
                      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-12 05:16 -0800
                      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-12 21:42 -0800
                        Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 Piotr Chamera <piotr_chamera@poczta.onet.pl> - 2019-12-13 08:34 +0100
                          Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-13 16:59 -0800
                        Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-13 06:17 -0800
                          Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-13 16:56 -0800
                            Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-14 03:14 -0800
                Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2019-12-07 13:22 -0800
    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 "Radoslaw Szwed" <radekszwed@pochta.fm> - 2019-12-10 10:29 +0100
      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-10 18:24 -0800
    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2019-12-11 21:15 -0800
    Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2020-05-25 12:55 -0700
      Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2020-05-26 01:35 -0700
        Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 osobliwy nick <osobliwy.nick@gmail.com> - 2020-05-27 12:12 -0700
          Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2020-05-27 13:58 -0700
            Re: Ile zajmie komputerowi mnożenie liczb rzędu 2^128 fir <profesor.fir@gmail.com> - 2020-05-27 14:03 -0700

Page 2 of 2 — ← Prev page 1 [2]


#33571

Fromfir <profesor.fir@gmail.com>
Date2019-12-13 06:17 -0800
Message-ID<1fc7c041-990f-45a5-bdbd-07ac852670cc@googlegroups.com>
In reply to#33569
W dniu piątek, 13 grudnia 2019 06:42:35 UTC+1 użytkownik osobliwy nick napisał:
> > 10 GB/s ? moze oni licza to dla jakichs 32 rdzeniowych procesorow wtedy moze - nie wiem jak wydajne sa te instrukcje aes-ni ale 10 GB/s to raczej dla wielu procesorow na raz a i tak to wychodziloby kilka/kilkanascie cykli na zaszyfrowanie inta czyli bardzo malo.. mz idzie to wytlumaczyc tylko tym ze to sa dane dla wielu rdzeni 
> 
> Nie wiem dokładnie jak działa AES. Tutaj jest popularno-naukowe wyjaśnienie:
> 
> https://www.youtube.com/watch?v=O4xNJsjtN6E
> 
> nie wiem jednak, czy może być coś warte na poziomie szczegółowości, którego potrzebujemy. Przeglądałem jakiś czas temu dokumentację AES'a zamieszczoną przez NSA, ale tylko ją przejrzałem, nie mogę powiedzieć, że wiem dokładnie jak działa ten algorytm.
> 
> Natomiast dobrze udokumentowanym algorytmem jest w wielu aspektach podobny do niego DES. Łatwo znaleźć informacje co robi DES - to są mniej więcej tego rodzaju przekształcenia. Nie mam natomiast kompletnie pojęcia, czy mogą być one realizowane aż tak szybko. Nie umiem też stwierdzić na podstawie notek wikipedii co za procesory tam były używane. Jak pisze wikipedia:
> 
> "W przypadku mikroprocesorów klasy Pentium Pro, szyfrowanie za pomocą AES'a wymaga 18 cykli zegara na każdy bajt, co jest równoznaczne z wydajnością rzędu 11 MB/s dla procesora 200 MHz. Z kolei na procesorze klasy Pentium M o szybkości 1.7 GHz wydajność wynosi ok. 60 MB/s.
> 
> Na procesorach Intel Core i3/i5/i7, AMD APU a także na procesorach AMD FX wspierających zestaw instrukcji AES, wydajność może przekroczyć 700 MB/s na każdy wątek."
> 
> Procesor klasy pentium M o szybkości 1,7 GHz, to po prostu procesor 1,7 GHz, ma chyba jeden rdzeń. Nie wiem, nie znam się na procesorach, wiem tyle, co przeczytałem o tym procesorze na wikipedii.
> 
> > > 1000000/166*128/20*1/2^20= 0.037 MB/s
> > > 
> > 
> > 
> > kolega jest chyab niezle pijany...
> > pisalem wyzej ze jedna taka iteracja na incie (4 bajty) moze zjac gdzies w granicach 10 ns (powiedzmy, plus minus, byc moze jest to zbytni pesymizm moze zajelo by tylko 3 ns) sto zajmie wiec w okolicach 1 mikrosekundy, na sekunde wiec wyjdzie to 1M intow czyli 4 MB (na rdzen)
> 
> 166 mikrosekund wziąłem z wyliczeń Piotra Chamera. Z tego co Ty napisałeś wynika zaś, że można to zrobić 50 razy szybciej. 10 nanosekund dla 64-bitowych liczb na iterację, dla 128-bitowych - 3 razy wolniej, czyli 30 nanosekund. To daje 128*30=3840 nanosekund na 128 iteracji (czyli 3,84 mikrosekund). Wówczas wychodzi:
> 
> 1000000/3,84*128/20*1/2^20 = 1,59 MB/s
> 
> Nie rozumiem w takim razie tylko skąd taka rozbieżność pomiędzy tym co piszesz Ty, a tym co policzył Piotra Chamera.
> 
> > (byc moze jest to zbyt pesymistyczne ale chodzilo mi o zarysowanie rzedu wielkosci, jesli wziac optymistycznie ze to bedzie ze 3 razy szybsze i masz 32 rdzenie to wyjdzie 12*32 = 384 MB/s, a jesli sa te specjalne instrukcje przyspieszajace to kilka razy to moze byc kilka razy wiecej ale i tak z tym 10 GBs tu wydaje sie przesada, chyab ze to na GPU)
> 
> No tak, przy 32 rdzeniach wygląda to świetnie. Ale te dane dla AES'a na procesorze klasy Pentium M o szybkości 1.7 GHz chyba nie dotyczą 32 rdzeni, tylko jednego?
> 
> > ciezko sie z kolega rozmawia bo kolega ma kalasyczny syndropm nooba czyli wyglaszanie jako pewniki zbioru zalozen ktore kolega uwaza za wazne a ktore widac ze sa mozna watpliwe lub ewidentnie falszywe
> 
> Chodzi Ci o te szacunki dot. AES'a? Tutaj:
> 
> https://crypto.stackexchange.com/questions/52958/is-there-an-encryption-algorithm-which-is-a-magnitude-faster-than-aes-with-wea
> 
> ktoś pisze, że:
> 
> "A classical table-based AES implementation would achieve about 160 MB/s on my current computer (a fairly recent MacBook Pro)"
> 
> Czyli jeszcze więcej. Może czegoś z tego nie rozumiem. Ile rdzeni ma ten MacBook Pro? Chyba 6-8? Raczej nie 32.

tlumaczyl;em  ci jak to sie szacuje byc zrozumial i nie bil piany na grupie, znasz chyba jakies elementarne podstawy asemblera?

takie cos 

> f(x) = a/2*x + b/2  -  gdy x jest nieparzyste 
> f(x) = x/2  -  gdy x jest parzyste 

w asemblerze bedzie wygladalo z grubsza jako

loop:
 mov eax, x
 jp l2
 shr eax, 1
 mov x, eax
 jmp loop
l2:
 mov eax, a  
 shr eax, 1   ; eax =  a/2
 mul eax, x   ; eax = a/2*x
 mov ebx, b
 shr ebx, 1
 add eax, ebx ; eax = a/2*x + b/2
 mov x, eac
jmp loop

choc w praktyce to zapisywanie do x'a byloby pominiete

ile to zajmie liczy sie tak ze mozesz z grubsza zalocyc ze jedno mov zajmuje okolo 1 cykla , shr okolo 2 cykl, mul okolo 2 cykle , skoki okolo 2 cykle (kiedys to bylo wiecej, zalezy od procka) 

ile zajmuje kazda komenda dla konkretnego procesora mozesz sprawdzic tutaj

https://www.agner.org/optimize/instruction_tables.pdf

patrz na kolumny latency i troughput, 
troughput to jest wydajnosc gdy poszzegolne komendy nie blokuja sie za bardzo tj gdy np kolejna nie musi czekac na wynik poprzednie, latency to jest ta
bardziej pesymistyczna wartosc gdy komendy od siebie zaleza

ja patrzylem dla skylake czyli okolo strony 240 

zrozum podstawy i przestaniesz bic piane,
pytanie jest zasadniczo ok ale jako ze malo znasz si ena tym temacie to gdy piszesz rozne eleboraty to jakby siejesz niekompetencje i to jest troche denerwujace

ile to konkretnie trwa najlepiej nalezy sprawdzi samemu, trzeba to wtedy napsiac w c lub w asmie i samemu odpalic, komputer umozliwia r obienie doklednych testow i nei ma z tym problemu... jak masz kilka stowek czy tysiaka do wydania to moge ci potestowac za kase co tam chcesz i udzilic ci tez konsultacji ale nie pale sie do tego bo jestem zmeczony leniwy i nie mam wprawy w zalatwianiu formalnosci  - z drugiej strony robic tego za darmo mi sie nie chce bo mam ciekawsze rzezy do roboty. pzdr

[toc] | [prev] | [next] | [standalone]


#33574

Fromosobliwy nick <osobliwy.nick@gmail.com>
Date2019-12-13 16:56 -0800
Message-ID<5da5c3e8-1beb-4287-be4c-4544baa86125@googlegroups.com>
In reply to#33571
> tlumaczyl;em  ci jak to sie szacuje byc zrozumial i nie bil piany na grupie

Nie biję piany :)

> znasz chyba jakies elementarne podstawy asemblera?

Nie.

> zrozum podstawy i przestaniesz bic piane

To albo mam zrozumieć podstawy, albo przestać bić pianę. Bez pytań i odpowiedzi o te podstawy raczej ich nie zrozumiem. 

> pytanie jest zasadniczo ok ale jako ze malo znasz si ena tym temacie to gdy piszesz rozne eleboraty to jakby siejesz niekompetencje i to jest troche denerwujace

Ja próbuję tylko oszacować ten prosty czas, w odpowiedzi na wydawałoby się proste pytanie. Ale wszystko wskazuje na to, że chyba nie jest ono wcale takie proste i wszystko rozbija się o niuanse i szczegóły. Tym bardziej dla mnie, skoro jestem dosyć zielony w temacie programowania i optymalizacji. 

> ile to konkretnie trwa najlepiej nalezy sprawdzi samemu, trzeba to wtedy napsiac w c lub w asmie i samemu odpalic, komputer umozliwia r obienie doklednych testow i nei ma z tym problemu... jak masz kilka stowek czy tysiaka do wydania to moge ci potestowac za kase co tam chcesz i udzilic ci tez konsultacji ale nie pale sie do tego bo jestem zmeczony leniwy i nie mam wprawy w zalatwianiu formalnosci  - z drugiej strony robic tego za darmo mi sie nie chce bo mam ciekawsze rzezy do roboty

Jestem skłonny zapłacić komuś za konkretne testy, ale Twojej wypowiedzi nie traktuję jako propozycji, tylko danie mi do zrozumienia, że bardziej szczegółowa odpowiedź wymaga nakładu pracy, której Ci się nie chcę ot tak wykonywać dla jakiegoś anonima z internetu. Sam napisałeś wielokrotnie, że problem Cię nie interesuje, a moja osoba, czy też sposób w jaki się wypowiadam Cię denerwuje. Nie podejmę współpracy z kimś kto traktuje mnie jak natręta, ignoranta i petenta, a rozważany problem przyprawia go już z góry o migrenę, to na pewno. A i Tobie nie wykonywałoby się zlecenia przyjemnie dla kogoś takiego :) 

Szukam kogoś do współpracy, ale nie na gwałt, a do tego mam jeszcze kilka innych zagadnień związanych z tym tematem, więc wolałbym, żeby ktoś komu dam do wykonania podobne zlecenia nie chciał mnie rozszarpać już na wstępie, ledwo po zapoznaniu się z zadaniem :)

[toc] | [prev] | [next] | [standalone]


#33582

Fromfir <profesor.fir@gmail.com>
Date2019-12-14 03:14 -0800
Message-ID<7dd85ce2-5b50-4cc0-a8d9-eeea0276b8f7@googlegroups.com>
In reply to#33574
W dniu sobota, 14 grudnia 2019 01:56:46 UTC+1 użytkownik osobliwy nick napisał:
> > tlumaczyl;em  ci jak to sie szacuje byc zrozumial i nie bil piany na grupie
> 
> Nie biję piany :)
> 
> > znasz chyba jakies elementarne podstawy asemblera?
> 
> Nie.
> 
> > zrozum podstawy i przestaniesz bic piane
> 
> To albo mam zrozumieć podstawy, albo przestać bić pianę. Bez pytań i odpowiedzi o te podstawy raczej ich nie zrozumiem. 
> 
> > pytanie jest zasadniczo ok ale jako ze malo znasz si ena tym temacie to gdy piszesz rozne eleboraty to jakby siejesz niekompetencje i to jest troche denerwujace
> 
> Ja próbuję tylko oszacować ten prosty czas, w odpowiedzi na wydawałoby się proste pytanie. Ale wszystko wskazuje na to, że chyba nie jest ono wcale takie proste i wszystko rozbija się o niuanse i szczegóły. Tym bardziej dla mnie, skoro jestem dosyć zielony w temacie programowania i optymalizacji. 
> 
> > ile to konkretnie trwa najlepiej nalezy sprawdzi samemu, trzeba to wtedy napsiac w c lub w asmie i samemu odpalic, komputer umozliwia r obienie doklednych testow i nei ma z tym problemu... jak masz kilka stowek czy tysiaka do wydania to moge ci potestowac za kase co tam chcesz i udzilic ci tez konsultacji ale nie pale sie do tego bo jestem zmeczony leniwy i nie mam wprawy w zalatwianiu formalnosci  - z drugiej strony robic tego za darmo mi sie nie chce bo mam ciekawsze rzezy do roboty
> 
> Jestem skłonny zapłacić komuś za konkretne testy, ale Twojej wypowiedzi nie traktuję jako propozycji, tylko danie mi do zrozumienia, że bardziej szczegółowa odpowiedź wymaga nakładu pracy, której Ci się nie chcę ot tak wykonywać dla jakiegoś anonima z internetu. Sam napisałeś wielokrotnie, że problem Cię nie interesuje, a moja osoba, czy też sposób w jaki się wypowiadam Cię denerwuje. Nie podejmę współpracy z kimś kto traktuje mnie jak natręta, ignoranta i petenta, a rozważany problem przyprawia go już z góry o migrenę, to na pewno. A i Tobie nie wykonywałoby się zlecenia przyjemnie dla kogoś takiego :) 
> 
> Szukam kogoś do współpracy, ale nie na gwałt, a do tego mam jeszcze kilka innych zagadnień związanych z tym tematem, więc wolałbym, żeby ktoś komu dam do wykonania podobne zlecenia nie chciał mnie rozszarpać już na wstępie, ledwo po zapoznaniu się z zadaniem :)

bije kolega piane nieststy, bieice piany polega tu na zestawieniu kogos kto nei chwyta jak tos ie robi (szacuje ile konkretne obliczenie bedzie trwac) z kims kto to chwyta i powtarzaniu swojej niekompetencji i przeswiadczen zamiast zrozumieniu o co chodzi, nop w ostatnim poscie napisalem to bardzo dobrze

co do zaplacenai za konsulatacje, to suepr ze nie bo ciezko sie z kolega meczy choc kolega nawiasem mowiac traci dosyc enna szanse (bo ja z optymalizacji na cpu jestem dosyc ogarniety i mam nie taka czesta do spotkania dobra wiedze) ale to kolegi strata a nie moja..jako ze kolega bije piana i tak raczej wiadomo ze chodzi o bicie piany a nei o zrobienie czegos naprawde

[toc] | [prev] | [next] | [standalone]


#33547

Fromfir <profesor.fir@gmail.com>
Date2019-12-07 13:22 -0800
Message-ID<5094f187-1f83-447e-99c9-ec89e6ec6cea@googlegroups.com>
In reply to#33538
W dniu czwartek, 5 grudnia 2019 21:18:48 UTC+1 użytkownik osobli...@gmail.com napisał:
> > dla mnie to wogole nie jest interesujace
> Kwestia gustu, mnie fascynują te problemy, zwłaszcza, że mają istotne związki z hipotezą Collatza. Chaos deterministyczny, Wolfram rules, automaty komórkowe - dla mnie to wszystko ciekawe rzeczy.

nie watpie ;c problem w tym ze jak sie szuka odpowiedzi trzeba znalezc kogos koho to interesuje lub zainteresuje a z tym w praktyce bywa ciezko ;< (co znam z zycia gdzie wiekszosc ciekawych tematow trzeba robic zupelnie samemu a na forum mozn apogadav glownie o pewnym waskim wycinku tematow o ktorych akurat komus chce sie gadac)

[toc] | [prev] | [next] | [standalone]


#33554

From"Radoslaw Szwed" <radekszwed@pochta.fm>
Date2019-12-10 10:29 +0100
Message-ID<qsnond$1t1n$2@gioia.aioe.org>
In reply to#33526
> Użytkownik <osobliwy.nick@gmail.com> napisał w wiadomości news:b7426ee8-be56-48fc-9657-da5a18e0729b@googlegroups.com...
....
> Czy ktoś jest w stanie wykonać takie obliczenia i zmierzyć czas? A może możecie podsunąć jakiś sensowny sposób oszacowania tego?

Program do testowania wersja 32bit. Wersja 64bit powinna działać szybciej niestety
byłem w podróży i miałem dostęp tylko do laptopa z systemem 32bit.
Zrobiłem testy dla 16,32,64,128 powtórzeń.

Czas obliczeń uzyskany przy pomocy rozkazu RDTSC
Pierwsza liczba do ilość powtórzeń druga średnia ilość cykli zegara

Procesor i5-4200 2,5GHz
16 - 14000
32 - 15900
64 - 19500
128 - 26500

Porcesor i7-6700 3.4GHz
16 -  9800
32 -  12500
64 - 15900
128 - 24000

Porcesor i7-8750 2.2GHz
16 - 7500
32 -10000
64 - 11000
128 - 14000

[toc] | [prev] | [next] | [standalone]


#33556

Fromosobliwy nick <osobliwy.nick@gmail.com>
Date2019-12-10 18:24 -0800
Message-ID<8f6499cc-fe96-4dd8-a405-05f048e97ffc@googlegroups.com>
In reply to#33554
> Program do testowania wersja 32bit. Wersja 64bit powinna działać szybciej niestety
> byłem w podróży i miałem dostęp tylko do laptopa z systemem 32bit.
> Zrobiłem testy dla 16,32,64,128 powtórzeń.
> 
> Czas obliczeń uzyskany przy pomocy rozkazu RDTSC
> Pierwsza liczba do ilość powtórzeń druga średnia ilość cykli zegara
> 
> Procesor i5-4200 2,5GHz
> 16 - 14000
> 32 - 15900
> 64 - 19500
> 128 - 26500
> 
> Porcesor i7-6700 3.4GHz
> 16 -  9800
> 32 -  12500
> 64 - 15900
> 128 - 24000
> 
> Porcesor i7-8750 2.2GHz
> 16 - 7500
> 32 -10000
> 64 - 11000
> 128 - 14000

Ok, dzięki! To niesie ważną informację, że nie warto zmniejszać liczby operacji, bowiem oszczędności na prędkości są bardzo niewielkie w porównaniu do utraty bezpieczeństwa. Szyfrowanie w blokach 16-bitowych nie może się nawet równać z szyfrowaniem w blokach 128-bitowych. Jeśli dobrze rozumiem w ostatnim przypadku 128 iteracji zostało wykonanych w czasie 14000/(2,2*1000000000) sekund. A to jest 2.2*1000000000/14000*128/20*1/2^20 = 0,96 MB na sekundę w moim algorytmie. Są to już praktyczne i użyteczne wartości dla większości zastosowań szyfrów symetrycznych. Czyli warto pracować nad tym algorytmem! Fakt, aby dogonić AES'a trzeba szyfrować 10-100 razy szybciej, choć te szacunki rozjeżdżają się mocno.

W przypadku mikroprocesorów klasy Pentium Pro, szyfrowanie za pomocą AES'a wymaga 18 cykli zegara na każdy bajt, co jest równoznaczne z wydajnością rzędu 11 MB/s dla procesora 200 MHz. Z kolei na procesorze klasy Pentium M o szybkości 1.7 GHz wydajność wynosi ok. 60 MB/s.

[toc] | [prev] | [next] | [standalone]


#33562

Fromosobliwy nick <osobliwy.nick@gmail.com>
Date2019-12-11 21:15 -0800
Message-ID<f58817dd-274c-4a06-9e42-d572e590ddf1@googlegroups.com>
In reply to#33526
Dodam jeszcze tylko, że najprawdopodobniej szyfrowanie mogłoby się odbywać również w blokach 64-bitowych lub nawet 32-bitowych. A zatem podobne obliczenia wystarczy oszacować dla 64 iteracji, zaczynając od liczby 2^64-5 albo dla 32 iteracji zaczynając od liczby 2^32-5.

Przyjąłem bloki 128-bitowe, ponieważ są one współcześnie standardem. Według mojej wiedzy nie są one jednak koniecznością i większość symetrycznych szyfrów blokowych używa tak dużych bloków z konieczności, bowiem mają one ścisły związek z rozmiarem ich kluczy. Klucze zaś muszą być współcześnie duże, minimum 128-bitowe, aby zapewniały bezpieczeństwo. W moim algorytmie jednak można zastosować nawet klucz 256-bitowy, zaś szyfrowanie może odbywać się w praktycznie dowolnie małych blokach.

Nie mogą być one jednak za małe. Dla bloków 128-bitowych wszystkie możliwe wektory binarne o 128 cyfrach można ułożyć na 128! sposobów, czyli 3,86*10^215. Zaś dla przypadku bloków 64-bitowych można to zrobić na 64!=1,27*10^89. To wciąż znacznie więcej możliwych sposobów, niż liczba możliwych 128-bitowych kluczy. To również nieosiągalne do odtworzenia ilości dla kogoś kto podsłuchiwałby transmisje (w celu odtworzenia permutacji, którą realizuje algorytm), czy w ogóle kogoś, kto chciałby pomieścić tak ogromne permutacje na dysku. Wydaje się zatem, że bez utraty bezpieczeństwa można szyfrować również w krótszych blokach (choć muszę jeszcze zgłębić ten temat).

A to by oznaczało, że mój algorytm mógłby być najszybszym algorytmem na świecie, bo prawdopodobnie obliczenia dla przypadku n=64 będą o rząd lub kilka rzędów wielkości szybsze.

[toc] | [prev] | [next] | [standalone]


#33959

Fromosobliwy nick <osobliwy.nick@gmail.com>
Date2020-05-25 12:55 -0700
Message-ID<90136054-80d1-4102-b4c6-3e6c978ebfd3@googlegroups.com>
In reply to#33526
Jeśli kogoś to interesuje, to oto jak szybki jest AES:

https://crypto.stackexchange.com/questions/44927/how-long-does-a-good-aes-encryption-take

W 6 sekund szyfruje 1 GB! A poniżej użytkownik pisze, że można zejść nawet do 1 GB w 0,6 sekund.

[toc] | [prev] | [next] | [standalone]


#33960

Fromfir <profesor.fir@gmail.com>
Date2020-05-26 01:35 -0700
Message-ID<bf863496-3213-4351-9e23-1141b0f18706@googlegroups.com>
In reply to#33959
W dniu poniedziałek, 25 maja 2020 21:55:24 UTC+2 użytkownik osobliwy nick napisał:
> Jeśli kogoś to interesuje, to oto jak szybki jest AES:
> 
> https://crypto.stackexchange.com/questions/44927/how-long-does-a-good-aes-encryption-take
> 
> W 6 sekund szyfruje 1 GB! A poniżej użytkownik pisze, że można zejść nawet do 1 GB w 0,6 sekund.

przy sprzetowej akceleracji...
problem z userami takimi jak ty jest takiz e probujesz oswiecac grupe nie znajac sie na tym o czym mowisz co skutecznie czesto (w przypadku tego typu podejscia) prowoduje sianie ciemnoty... (ja sam osobiscie maga nie cierpie takich ludzi bo grupa jest od siania wlasnie wiedzy a nie degenerowania jej i siania ciemnoty)

[toc] | [prev] | [next] | [standalone]


#33961

Fromosobliwy nick <osobliwy.nick@gmail.com>
Date2020-05-27 12:12 -0700
Message-ID<0b3130b4-dc1d-4613-b590-47e7fc119ccf@googlegroups.com>
In reply to#33960
W dniu wtorek, 26 maja 2020 10:35:38 UTC+2 użytkownik fir napisał:
> W dniu poniedziałek, 25 maja 2020 21:55:24 UTC+2 użytkownik osobliwy nick napisał:
> > Jeśli kogoś to interesuje, to oto jak szybki jest AES:
> > 
> > https://crypto.stackexchange.com/questions/44927/how-long-does-a-good-aes-encryption-take
> > 
> > W 6 sekund szyfruje 1 GB! A poniżej użytkownik pisze, że można zejść nawet do 1 GB w 0,6 sekund.
> 
> przy sprzetowej akceleracji...

Aha, tego nie wziąłem pod uwagę. Dotarłem do kodu AESa w Pythonie 3. Jeśli się nie mylę, to jest przykładowa implementacja tego szyfru:

https://github.com/boppreh/aes/blob/master/aes.py

Nie potrafię tego uruchomić. A chcę to porównać z moim kodem, który także mam w Pythonie 2. Przykładowy zestaw kluczy:

#!/usr/bin/python

from sys import argv

keys=eval(argv[1]) # list of function selectors aka the key
v=eval(argv[2]) # endianness vector
r=len(keys) # nmbr rounds implied by keys
bo=int(argv[3]) # nmbr of bits out
pt=int(argv[4]) # the plaintext


parms=[-7,-5,-3,3,5,7]
rf=[(parms[i/6],parms[i%6],2) for i in
range(36)]+[(parms[i/6],parms[i%6],-2) for i in range(36)]


def swapendian(x, nmbrbits):
         s=0
         for i in range(nmbrbits):
                 s+=2**(nmbrbits-i-1)*((x>>i)%2)
         return s

def genf(a,b,c):
         def f(x):
                 if x % 2 == 1:
                         return ((x * a + b)/2,1)
                 return (x/c,0)
         return f


def round(s,a,b,c,n):
         f=genf(a,b,c)
         o=0
         for i in range(0,n):
                 (s,ct)=f(s)
                 o+=ct*2**i
         return swapendian(o,n)

def encrypt(pt,r,keys,v):
         ct = pt
         for i in range(r):
                 if v[i] == 1:
                         ct=swapendian(ct,bo)
                 (a,b,c)=rf[keys[i]]
                 ct=round(ct,a,b,c,bo)
         return ct

print encrypt(pt,r,keys,v)

Uruchamiamy to komendą:

python main.py '[67,65,64,63,67,68,67,65,70,68,71,64,69,71,70,65,68,66,67,70]' '[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]' 128 123

Przy czym "123", to szyfrowana liczba, możemy podać dowolną liczbę 128-bitową. Pytanie, czy mój kod będzie szybszy niż AES. BTW - kod nie jest mojego autorstwa, koledzy z innego forum mi pomogli. Na oko wygląda, że tak. Nie jestem pewien też, czy dobry kod AESa znalazłem i czy to jest cały AES, czy coś tam poupraszczali. Ktoś umie uruchomić tego AESa?

> problem z userami takimi jak ty jest takiz e probujesz oswiecac grupe nie znajac sie na tym o czym mowisz co skutecznie czesto (w przypadku tego typu podejscia) prowoduje sianie ciemnoty... (ja sam osobiscie maga nie cierpie takich ludzi bo grupa jest od siania wlasnie wiedzy a nie degenerowania jej i siania ciemnoty)

Nigdzie nie napisali o akceleracji sprzętowej, nie miałem pojęcia jakie to może mieć znaczenie. W tej chwili mam kod, jak widać powyżej, który uruchamiam w:

https://repl.it/languages/python

Bo jeszcze nie nauczyłem się nawet instalować Pythona u siebie na kompie (a nie wiem co za procesor obsługuje ten intepreter). I muszę dojść do tego ile szyfrowanie zajmie AESowi, a ile mojemu algorytmowi.

[toc] | [prev] | [next] | [standalone]


#33962

Fromfir <profesor.fir@gmail.com>
Date2020-05-27 13:58 -0700
Message-ID<e64baec6-1c0d-4f11-8462-77cedca4ffe2@googlegroups.com>
In reply to#33961
W dniu środa, 27 maja 2020 21:12:02 UTC+2 użytkownik osobliwy nick napisał:
> W dniu wtorek, 26 maja 2020 10:35:38 UTC+2 użytkownik fir napisał:
> > W dniu poniedziałek, 25 maja 2020 21:55:24 UTC+2 użytkownik osobliwy nick napisał:
> > > Jeśli kogoś to interesuje, to oto jak szybki jest AES:
> > > 
> > > https://crypto.stackexchange.com/questions/44927/how-long-does-a-good-aes-encryption-take
> > > 
> > > W 6 sekund szyfruje 1 GB! A poniżej użytkownik pisze, że można zejść nawet do 1 GB w 0,6 sekund.
> > 
> > przy sprzetowej akceleracji...
> 
> Aha, tego nie wziąłem pod uwagę. Dotarłem do kodu AESa w Pythonie 3. Jeśli się nie mylę, to jest przykładowa implementacja tego szyfru:
> 
> https://github.com/boppreh/aes/blob/master/aes.py
> 
> Nie potrafię tego uruchomić. A chcę to porównać z moim kodem, który także mam w Pythonie 2. Przykładowy zestaw kluczy:
> 
> #!/usr/bin/python
> 
> from sys import argv
> 
> keys=eval(argv[1]) # list of function selectors aka the key
> v=eval(argv[2]) # endianness vector
> r=len(keys) # nmbr rounds implied by keys
> bo=int(argv[3]) # nmbr of bits out
> pt=int(argv[4]) # the plaintext
> 
> 
> parms=[-7,-5,-3,3,5,7]
> rf=[(parms[i/6],parms[i%6],2) for i in
> range(36)]+[(parms[i/6],parms[i%6],-2) for i in range(36)]
> 
> 
> def swapendian(x, nmbrbits):
>          s=0
>          for i in range(nmbrbits):
>                  s+=2**(nmbrbits-i-1)*((x>>i)%2)
>          return s
> 
> def genf(a,b,c):
>          def f(x):
>                  if x % 2 == 1:
>                          return ((x * a + b)/2,1)
>                  return (x/c,0)
>          return f
> 
> 
> def round(s,a,b,c,n):
>          f=genf(a,b,c)
>          o=0
>          for i in range(0,n):
>                  (s,ct)=f(s)
>                  o+=ct*2**i
>          return swapendian(o,n)
> 
> def encrypt(pt,r,keys,v):
>          ct = pt
>          for i in range(r):
>                  if v[i] == 1:
>                          ct=swapendian(ct,bo)
>                  (a,b,c)=rf[keys[i]]
>                  ct=round(ct,a,b,c,bo)
>          return ct
> 
> print encrypt(pt,r,keys,v)
> 
> Uruchamiamy to komendą:
> 
> python main.py '[67,65,64,63,67,68,67,65,70,68,71,64,69,71,70,65,68,66,67,70]' '[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]' 128 123
> 
> Przy czym "123", to szyfrowana liczba, możemy podać dowolną liczbę 128-bitową. Pytanie, czy mój kod będzie szybszy niż AES. BTW - kod nie jest mojego autorstwa, koledzy z innego forum mi pomogli. Na oko wygląda, że tak. Nie jestem pewien też, czy dobry kod AESa znalazłem i czy to jest cały AES, czy coś tam poupraszczali. Ktoś umie uruchomić tego AESa?
> 
> > problem z userami takimi jak ty jest takiz e probujesz oswiecac grupe nie znajac sie na tym o czym mowisz co skutecznie czesto (w przypadku tego typu podejscia) prowoduje sianie ciemnoty... (ja sam osobiscie maga nie cierpie takich ludzi bo grupa jest od siania wlasnie wiedzy a nie degenerowania jej i siania ciemnoty)
> 
> Nigdzie nie napisali o akceleracji sprzętowej, nie miałem pojęcia jakie to może mieć znaczenie. W tej chwili mam kod, jak widać powyżej, który uruchamiam w:
> 
> https://repl.it/languages/python
> 
> Bo jeszcze nie nauczyłem się nawet instalować Pythona u siebie na kompie (a nie wiem co za procesor obsługuje ten intepreter). I muszę dojść do tego ile szyfrowanie zajmie AESowi, a ile mojemu algorytmowi.

NIE WIEM ILE CI TO ZAJMIE ALE CO TY JESTES ZA DZIWAKIEM BY SNUC TAKIE ROZWAZANIA

[toc] | [prev] | [next] | [standalone]


#33963

Fromfir <profesor.fir@gmail.com>
Date2020-05-27 14:03 -0700
Message-ID<a08b90ed-e43d-4104-8007-a599405076c3@googlegroups.com>
In reply to#33962
W dniu środa, 27 maja 2020 22:58:49 UTC+2 użytkownik fir napisał:
> W dniu środa, 27 maja 2020 21:12:02 UTC+2 użytkownik osobliwy nick napisał:
> > W dniu wtorek, 26 maja 2020 10:35:38 UTC+2 użytkownik fir napisał:
> > > W dniu poniedziałek, 25 maja 2020 21:55:24 UTC+2 użytkownik osobliwy nick napisał:
> > > > Jeśli kogoś to interesuje, to oto jak szybki jest AES:
> > > > 
> > > > https://crypto.stackexchange.com/questions/44927/how-long-does-a-good-aes-encryption-take
> > > > 
> > > > W 6 sekund szyfruje 1 GB! A poniżej użytkownik pisze, że można zejść nawet do 1 GB w 0,6 sekund.
> > > 
> > > przy sprzetowej akceleracji...
> > 
> > Aha, tego nie wziąłem pod uwagę. Dotarłem do kodu AESa w Pythonie 3. Jeśli się nie mylę, to jest przykładowa implementacja tego szyfru:
> > 
> > https://github.com/boppreh/aes/blob/master/aes.py
> > 
> > Nie potrafię tego uruchomić. A chcę to porównać z moim kodem, który także mam w Pythonie 2. Przykładowy zestaw kluczy:
> > 
> > #!/usr/bin/python
> > 
> > from sys import argv
> > 
> > keys=eval(argv[1]) # list of function selectors aka the key
> > v=eval(argv[2]) # endianness vector
> > r=len(keys) # nmbr rounds implied by keys
> > bo=int(argv[3]) # nmbr of bits out
> > pt=int(argv[4]) # the plaintext
> > 
> > 
> > parms=[-7,-5,-3,3,5,7]
> > rf=[(parms[i/6],parms[i%6],2) for i in
> > range(36)]+[(parms[i/6],parms[i%6],-2) for i in range(36)]
> > 
> > 
> > def swapendian(x, nmbrbits):
> >          s=0
> >          for i in range(nmbrbits):
> >                  s+=2**(nmbrbits-i-1)*((x>>i)%2)
> >          return s
> > 
> > def genf(a,b,c):
> >          def f(x):
> >                  if x % 2 == 1:
> >                          return ((x * a + b)/2,1)
> >                  return (x/c,0)
> >          return f
> > 
> > 
> > def round(s,a,b,c,n):
> >          f=genf(a,b,c)
> >          o=0
> >          for i in range(0,n):
> >                  (s,ct)=f(s)
> >                  o+=ct*2**i
> >          return swapendian(o,n)
> > 
> > def encrypt(pt,r,keys,v):
> >          ct = pt
> >          for i in range(r):
> >                  if v[i] == 1:
> >                          ct=swapendian(ct,bo)
> >                  (a,b,c)=rf[keys[i]]
> >                  ct=round(ct,a,b,c,bo)
> >          return ct
> > 
> > print encrypt(pt,r,keys,v)
> > 
> > Uruchamiamy to komendą:
> > 
> > python main.py '[67,65,64,63,67,68,67,65,70,68,71,64,69,71,70,65,68,66,67,70]' '[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]' 128 123
> > 
> > Przy czym "123", to szyfrowana liczba, możemy podać dowolną liczbę 128-bitową. Pytanie, czy mój kod będzie szybszy niż AES. BTW - kod nie jest mojego autorstwa, koledzy z innego forum mi pomogli. Na oko wygląda, że tak. Nie jestem pewien też, czy dobry kod AESa znalazłem i czy to jest cały AES, czy coś tam poupraszczali. Ktoś umie uruchomić tego AESa?
> > 
> > > problem z userami takimi jak ty jest takiz e probujesz oswiecac grupe nie znajac sie na tym o czym mowisz co skutecznie czesto (w przypadku tego typu podejscia) prowoduje sianie ciemnoty... (ja sam osobiscie maga nie cierpie takich ludzi bo grupa jest od siania wlasnie wiedzy a nie degenerowania jej i siania ciemnoty)
> > 
> > Nigdzie nie napisali o akceleracji sprzętowej, nie miałem pojęcia jakie to może mieć znaczenie. W tej chwili mam kod, jak widać powyżej, który uruchamiam w:
> > 
> > https://repl.it/languages/python
> > 
> > Bo jeszcze nie nauczyłem się nawet instalować Pythona u siebie na kompie (a nie wiem co za procesor obsługuje ten intepreter). I muszę dojść do tego ile szyfrowanie zajmie AESowi, a ile mojemu algorytmowi.
> 
> NIE WIEM ILE CI TO ZAJMIE ALE CO TY JESTES ZA DZIWAKIEM BY SNUC TAKIE ROZWAZANIA

ile badz ci nie zajmie jak napiszesz dobrze )prawdopodobnie po kilku latach uczenia sie programowania) to zajmie ci tyle co innnym a jak napiszesz zle to zajmie ci duzo wiecej - ot i cala tajemnica

oczywiscie pewnie mozna wymyslec cos jako tako oryginalnego wtym temacie ale najpierw raczej trzeba go opanowac co niestety moze zajac (wliczajc nauke kodowania) pare lat


co do instalacji pythona to rozpakowujesz go 
do jakiegoc folderu typu c:\PYTHON35 i juz

pozniej piszesz kod w pliku costam.py
a ja odpalam to batem o takieh tresci

set PATH=c:\Python34;c:\Python34\Lib;C:\Python34\DLLs;

python.exe costam.py  


takie ustawianie sciezki w baie dziala w obrebie bata ale tow ystarczy i nie robui syfu w sciezkach (nie jestem pewien czy wszystkie te 3 sciezki sa nawet potrzebne)

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | pl.comp.programming


csiph-web