GPI hat geschrieben:@TroaX
Zeile 38 ist "hashedstring = StringFingerprint(hashedstring + Str(x),#PB_Cipher_SHA3,shadepth)" - da ist kein XOR...
Das ist ja auch nicht die geänderte Fassung. Die ist schon ein paar Tage unverändert auf dem Server. Aber die Zeile ist richtig. IN meiner aktuellen steht da das drin:
Bench without Pepperlist and Compare
1 Iterations in 0 ms | Hash: 1B9AA88E0A78B7D4DDB4FB9D18E4712784BF204EED16FB64A5FEE250122A4985.6Z7ALqJe
2 Iterations in 0 ms | Hash: 619B54A22D131E38E110F949C1E889F62DDD57A60BFB2AFC87F31C947E8A0B89.qf9f0qzF
4 Iterations in 0 ms | Hash: 38CA434325EF297A41240FDD87B15023196AD1931A958D72F21494F4D3C7D5EA.ukPTdOGY
8 Iterations in 0 ms | Hash: 273273D552D41AECA58DD6F4076431ED505C7880715081119FD28548AE968F30.9l7mA7JA
16 Iterations in 0 ms | Hash: EA48EE123EA29CCB063DFF13B8CA88892C92C155D1AEFCE88A45CF8573D5C1AF.HICxfu4K
32 Iterations in 0 ms | Hash: 8111198FB3DEF5AF1BC6A23A28B66B340F19B6F2F0E75E82220421359E4EF636.1nIizZ4E
64 Iterations in 1 ms | Hash: 35E6C85B7AD2B235235E8D371F89375A5084B814E318FE700AA264DE14F2FA03.D9q22Z5j
128 Iterations in 0 ms | Hash: 0B9D8B060CB60A463ADCDF27EBF1AEBBBAE43A2FDB2B30103F68406739A3B945.TR5e7oM8
256 Iterations in 1 ms | Hash: 0C22A902C22DBAC36BADF91613A6F9174506FBB550C1F59149856C05165F827E.90TJ6oD3
512 Iterations in 1 ms | Hash: 56DAF1FF00B877D29F6711A241F3A86A145A869FD7BA4BC1B372D16A11CF8094.nIwFlW5h
1024 Iterations in 2 ms | Hash: A40AD3176BE1BFBB4963D867CFBC181AC5E1CBB6FF3E7F9291B4FB69A1DE3AC0.sSC9c833
2048 Iterations in 5 ms | Hash: D1A93E33E18236BC40E9CD0B3D892D5C69BB2B54977569AFD97DDE7DBD809252.EHk882TR
4096 Iterations in 9 ms | Hash: 362AA648E2D3A35128F924647686C2079C82BD9C330D8F22415546AFACF3735B.K2snO2OT
8192 Iterations in 18 ms | Hash: 7C7EAFF5813AD1848F969847DA345C0810E1756EF07F9DDA86D968B204E45529.B1IvrS1f
16384 Iterations in 37 ms | Hash: 74054ECE21630110795A76EEF109167BF9A732B99D0A1C3F859A3269B693D590.V3HpeL0Z
32768 Iterations in 74 ms | Hash: 4E4D62681ABAE72974A4FF15DE0ACBC0AF3CAC973C6DF6CF5B5E9B8C2B950CAA.1N9Ur4hv
65536 Iterations in 148 ms | Hash: 0F23AF81712D4FB011B40DE59C973395293BD591E41C4A0437551DEC0DDBB4C3.v7rXAed6
131072 Iterations in 298 ms | Hash: 1432CAC27C70D7AAFAC3053D97EF6DB940C9EE8796EA6D40B9AC09776E65CF6D.0bM2w7Lk
262144 Iterations in 597 ms | Hash: F5D71E0729B2530FD5A2248A3DBE85D08F33A92DE2AD6526246C096378DF72BC.dS6jurcM
524288 Iterations in 1185 ms | Hash: B3E6FD1891725118CAF8D46089F99025285DB182EF77AE485F2761CAF7F78661.kYQ53MXo
1048576 Iterations in 2377 ms | Hash: DA189E0F9FF866A445D242EECB54003BA88CD8BC1D605A3552EB27F461D26955.J8DrG74v
2097152 Iterations in 4747 ms | Hash: 10DA9C3C8F20292CA4DE6DA45A411C8F2C30CB61F361613E0E0B799041FB4362.0KITNbPv
4194304 Iterations in 9495 ms | Hash: 4604CF9EBAE3033C53E3ABAD87C7421B0217C2C33BC05E61BD83ABF57578D8BE.Tc22t9ZY
8388608 Iterations in 18985 ms | Hash: 167CCC89935DF984132D7C4FBDD25CEA3FACF6C01289FF3068E45177FAA5F32F.7Da90Ez5
16777216 Iterations in 37994 ms | Hash: 9C587E044FBDCEFEB03373A7F680311053A6344EA3063EDA04E6B8CE86C97E9C.9163H0pO
Nochmals deutlich schneller
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB) Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Methode 5 ist es, die du willst
Dazu muss man aber wohl ein bischen mehr ändern. Dann dürfte gut der Faktor 5 drin sein, die die xor-funktion schneller ist. Generell dürften ein paar sachen schneller werden.
GPI hat geschrieben:Methode 5 ist es, die du willst
Dazu muss man aber wohl ein bischen mehr ändern. Dann dürfte gut der Faktor 5 drin sein, die die xor-funktion schneller ist. Generell dürften ein paar sachen schneller werden.
Bench without Pepperlist and Compare
1 Iterations in 0 ms | Hash: 359438B5E44679DE00173381F121E19DB5B687C7A990F34D1CF4CFC6824E331F.m91FjE1d
2 Iterations in 0 ms | Hash: 77087C2C32DBBDBCFF0C318B090271F98BD57357D68E28FB7B3F1953311B111A.yB0Kwaak
4 Iterations in 0 ms | Hash: A63911E80AC123F7589A5D26D6E1D6EA7EC9845E355944646CA924A2C7E26E61.QZfAiYbQ
8 Iterations in 0 ms | Hash: 7B86A637E32C489B4D286A2092DC9FA801C04E67D269D345C4394243774E6866.j9RaSl3O
16 Iterations in 0 ms | Hash: 4A11103E10F3D3A23D95B4E68A9047527B9306C4C075D0C1AC17B568CD31EB5D.k0q58AlO
32 Iterations in 0 ms | Hash: E6B10B293642C99D81F0DC5957B1A5EA9191A858B633CE299ECF42EA47844FCD.MUhK87YT
64 Iterations in 0 ms | Hash: 5742F544B576504862BFB80C62F8987B7CB831054AB164DEE160E2CBC93C5C0D.l6u23Sv1
128 Iterations in 0 ms | Hash: D32135E86822DB8FFE80428468EEBDCB0FD57FF636A023FF0DF6098265AF28C7.ou2L3HMh
256 Iterations in 1 ms | Hash: 7530075A23908B794888E5303AA31CD496D831AC8A7F174C1D8E6FEE973563D2.nvn3p3Pd
512 Iterations in 1 ms | Hash: C37D63FBA61A20A8C8FEF259F3142B05B912FEA2B8B07906256E98C55D5AA183.Ir5WQ276
1024 Iterations in 2 ms | Hash: 564889379B696DB0024B61C78805F8548E3ABB022991931334F0D54474C042B0.vD176gbZ
2048 Iterations in 3 ms | Hash: 98D0389E2129F2E44D8933FE0670DEE471637F5E3B987704A956091B386C81CA.C7OKSJ35
4096 Iterations in 7 ms | Hash: F82579A758022BBD1765D6805B72E045946E00AEE95C55976780E66444190665.DjElcbmb
8192 Iterations in 14 ms | Hash: 8847B25C5CA3A0ACA13DB76CCD156989D3989C983371283FD69549A4EE55CA92.nvlU7fN7
16384 Iterations in 27 ms | Hash: FE5570982F897BE7403F3406FEAF3D532F02F6A0CB13661A83281005F46B8A28.w2g2KID3
32768 Iterations in 55 ms | Hash: DF3ACA69433B6BA8840E2078942C2394A22D26762B68F263AD2803D831765EB5.2FkF3AM1
65536 Iterations in 109 ms | Hash: BC6C3CBFA885786E379C89B84DDD845BC0A6CAA994BEC8B93419526A1E79D193.493618F0
131072 Iterations in 218 ms | Hash: 3AC13E33156ABAB1803E2E6F90A1DDDB4F8BAB514A63B039B8A603BC270075A4.qOhHN498
262144 Iterations in 435 ms | Hash: 9CBC793467EA3EA0143033AE6F6969F51B3493E420485697938A23F90856FACD.JpC5v115
524288 Iterations in 870 ms | Hash: 0EA2999D1038D743E7C9D0C19804E7B4694CB480BF3634695B04C8201A1A8C71.Iyii1b7q
1048576 Iterations in 1741 ms | Hash: 54080C8E8777725F80DA5F79EC2BE636757032E6DDE81A00FFF8628C7CAA9664.42H3WRrZ
2097152 Iterations in 3484 ms | Hash: 2D1FDD1582996DE508671A409EE05087229DD61F66B35E5D8A94A7D6F73E911A.X60le382
4194304 Iterations in 6973 ms | Hash: 8EB811D8DBDCFBCD652AF5C3E4D6EF44831D0A4002D2B519BAB84AF8D79F9602.SeKX58Eu
8388608 Iterations in 13950 ms | Hash: 37819A5498493219D6A3F73317156B42864D75573E490DFAEC928C5CD681C0AE.9h51Q82W
16777216 Iterations in 27970 ms | Hash: 91F606827C7E4EA49CD2441850019A1F8EC7A48EE7DB2C1667ECE9836894950D.RIfPLvP1
Der Hammer! Vielen dank! Und so viel musste ich nicht einmal ändern:
Nun habe ich endlich eine vernünftige Hashfunktion für Passwörter. Nur noch schick machen und alles ist schön
NACHTRAG: Habe die Methode auch noch einmal mit SHA3 512-Bit getestet. Sie ist auch schneller als die erste Version ohne XOR. Perfekt! Nochmals vielen vielen Dank
Zuletzt geändert von TroaX am 11.11.2015 20:20, insgesamt 1-mal geändert.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB) Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Wenn du weiter optimieren willst - wie gesagt, vermeide procedure.s und Strings als parameter. Als rückgabestring kannst du auch einen globalen String verwenden. Das könnte die Geschwindigkeit nochmals gewaltig erhöhen.
Wenn man einen String als Parameter übergibt, muss dieser immer erst umständlich kopiert werden. Genauso wenn man einen String zurückgibt. Das macht das ganze so dermaßen langsam.
Noch eine kleine Frage. Mir ist eben aufgefallen, das der RAM-Verbrauch beim iterieren exorbitant in die Höhe geht. Bei rund 1,6 GB hat der Bürorechner hier die Biege gemacht. Habe herausgefunden, das StringFingerprint bei jedem Aufruf im Speicher bleibt. Wenn ich stattdessen nur Fingerprint nehme, läuft es ohne Anstieg durch. Nur dort muss man mit einem Puffer arbeiten. Ich bekomme es nicht hin, das der String im Puffer das selbe Ergebnis ausspuckt wie als wenn ich StringFingerprint verwende.
Muss man da etwas bestimmtes beachten? Ich habe schon versucht, die Größe des Speichers an den String anzupassen. Allerdings reicht das nicht. Stehe etwas auf dem Schlauch:
GPI hat geschrieben:klingt eher nach einen Bug von StringFingerprint...
Ich denke auch. Denn nutze ich nur Fingerprint, ist der RAM-Verbrauch nie über 12 MB. Die Ergebnisse weichen nur eben ab. Aber bei StringFingerprint grundsätzlich immer weiter steigend, bis hier das System bei fast 2 GB ausgestiegen ist. Und dabei ist der Algo egal. MD5, SHA1, SHA2 und SHA3 getestet. Überall das gleiche Bild. Nur wenn Fingerprint keine gleichwertigen Daten liefert, dann kann es sein, das sogar die Routine einfacher Brechbar ist. Und das möchte ich nicht für eine Passwortfunktion haben.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB) Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Wenn du bei StringFingerPrint allerdings #PB_Ascii oder #PB_Unicode nutzt, dann musst du das bei PokeS natürlich auch machen. Ich alloziere übrigens extra 4 mal so viel Speicher bei AllocateMemory, weil ein UTF8-Zeichen maximal 4 Bytes lang sein kann. Sicher ist sicher.
Wenn du bei StringFingerPrint allerdings #PB_Ascii oder #PB_Unicode nutzt, dann musst du das bei PokeS natürlich auch machen. Ich alloziere übrigens extra 4 mal so viel Speicher bei AllocateMemory, weil ein UTF8-Zeichen maximal 4 Bytes lang sein kann. Sicher ist sicher.
Achsoooo ok .... Vielen Dank. Das kommt davon, wenn man nie mit Pointern und Speicherbereichen arbeitet. Schande über mein Haupt
EDIT: Das 4-fache reichte bei mir nicht. Mit *4 habe ich imemr einen ungültigen Speicherzugriff. Habe es mal mit 8 getestet. Damit klappt das in Verbindung mit UTF8.
GPI hat geschrieben:Vergiss nicht in englischen Forum ein Bug-Report zu liefern
Ich versuchs nachher. Aber ich verspreche nicht, das es jeder versteht. Mein Englisch ist unter aller Sau!
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB) Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node