|
Post by thomaslundqvist on Feb 26, 2018 18:35:07 GMT 1
Jag börjar med att skryta om de kollisioner jag hittade:
b'Thomas' har crc32 = 0x193f1288 b'Thomas2077614111' har samma b'Thomas3191202540' har samma Jag gjorde också om mitt program för att hitta ett hashvärde som är väldigt litet (mindre än 100) och hittade följande:
b'Thomas14535992' har crc32 = 54 (decimalt) Detta är samma teknik som använts vid mining (kommer senare i kursen). Att hitta kollisioner för SHA256 skulle vara mycket värre:
hashlib.sha256(b'Thomas').hexdigest() '5dfcf9ef1fb1ecbce32fefe37ae99aff68832a7e2ac74f52daa5a1bcd8038118' Förmodligen räcker inte alla datorer i världen här för att hitta kollisioner här. Kvantdatorer spås dock kunna hota det hela...
Posta gärna era kollisioner! Jag är nyfiken!
|
|
|
Post by sebastianahlberg on Feb 27, 2018 14:08:01 GMT 1
Kollade efter kollisioner inom rättstavningsordlistan jag hade och hittade:
fräkne och Lloyd har samma hash -0x22871ef3 gena och solovann har samma hash 0x8620e8a fängpanna och trådlöshet har samma hash -0x5873bc7c roadracingförare och tvillingbroder har samma hash 0x2b03b1e0
|
|
|
Post by satoshi on Mar 2, 2018 0:07:03 GMT 1
Hej hej! 25 minuter och ca 5 miljarder försök senare hittade jag min första kollision! nexusearth10601 och interpretative har samma hashvärde: 0xe709a187 Här har ni en engelsk ordlista i olika format om någon vill testa sig av den: github.com/dwyl/english-wordsHur länge tog det för dig att gå igenom din ordlista, Sebastian? Hur många ord bestod listan av? // Ola
|
|
|
Post by sebastianahlberg on Mar 2, 2018 10:44:51 GMT 1
Det tar inte lång tid handlar om nån sekund. Svenska ordlistan hade ungefär 135000 ord. Hur gör du din koll? Sparar du alla hashningar du gör och kollar om någon kolliderar eller spara du en och letar kollisioner med den? Spara du alla så går det snabbar att hitta kollisioner men var noga med att kolla så att du har minnet som krävs blir minnet fullt kommer det ta lång tid eller krascha. Ett tips är också att använda pythons inbyggda dictionary för att spara sina hash och ord, går snabbt att kolla kollisioner då.
Tog lite längre tid att hitta kollisioner om jag bara tog ett ord och la till en siffra på slutet men hittade väldigt många kollisioner.
|
|
jens
New Member
Posts: 5
|
Post by jens on Mar 2, 2018 17:55:22 GMT 1
Hejsan,
Jag får inte till mitt merkle-träd och vänder mig därför hit för att kanske få lite tips! Mitt försök går till på följande vis: 1) Jag omvandlar transaktionerna från strängar till byte 2) Jag vänder sedan på båda transaktionerna baklänges (exempelvis från "abc" till "cba") och lägger ihop dom 3) Jag hashar resultatet av värdet jag får ovan
Koden följer nedan: h1 = b'68c79026fbdec55f94518c504439b1d7dbe35a287eb0b24744143cfc3a224464' h2 = b'd66e64df7a9b855b7ab7660a0c95be42a74981c5a01bb722109b2b4cecfed006' h = h1[::-1] + h2[::-1] # vänder baklänges på h1 och h2 och lägger ihop dem h = hashlib.sha256(h).hexdigest() print(h)
|
|
|
Post by satoshi on Mar 2, 2018 18:19:12 GMT 1
Okej, nä jag räknade om hashvärdet för ordlistan vardera gång, hade gått mycket fortare och och sparat dem som du säger!
|
|
|
Post by thomaslundqvist on Mar 3, 2018 9:11:19 GMT 1
h = hashlib.sha256(h).hexdigest() print(h) Prova med en dubbel sha256... Och tänk på att en hexsträng inte är binärt. I en hexsträng motsvarar 2 hexsiffror 1 byte binär data. 'b' betyder att det är en bytesträng men det är fortfarande hexadecimala siffror. Du behöver avkoda hextalen till binär data också. Skillnaden märks tydligt om man kollar på längden på datan: len(b'ffff') = 4, men len(b'\xff\xff') = 2.
|
|
johan
New Member
Posts: 5
|
Post by johan on Mar 3, 2018 18:38:21 GMT 1
I python två så fungerar det att använda sig av decode för en sträng, men det fungerar inte i python 3. Exempel: str.decode("Format") - fungerar bra i python 2 men i trean så fungerar det inget vidare.
|
|
|
Post by thomaslundqvist on Mar 4, 2018 9:03:02 GMT 1
I python två så fungerar det att använda sig av decode för en sträng, men det fungerar inte i python 3. Exempel: str.decode("Format") - fungerar bra i python 2 men i trean så fungerar det inget vidare. Python 3 är bättre Där finns paketet binascii ( import binascii).
|
|
henq
New Member
Posts: 21
|
Post by henq on Mar 4, 2018 11:21:06 GMT 1
Mina resultat: Ord | CRC | Henrik | 0xE1C885AF
| Henrik3446833105
| 0xE1C885AF
| Henrik2037153486
| 0x1
|
Körde alltså 3446833105 varv innan jag hittade en kollision på Henrik. På vägen hittade jag några låga checksummor.
|
|
|
Post by andreasdeblanche on Mar 4, 2018 11:28:04 GMT 1
ohhhhh 0x1 - imponerande.
|
|
henq
New Member
Posts: 21
|
Post by henq on Mar 4, 2018 11:30:58 GMT 1
Har en kollision där också: Både Henrik2037153486 och Henrik3168918723 har CRC 0x1 Måste ju kunna bli 0 också...
|
|
henq
New Member
Posts: 21
|
Post by henq on Mar 4, 2018 13:50:02 GMT 1
Där kom den: Henrik8234114893 har CRC 0
|
|
|
Post by thomaslundqvist on Mar 4, 2018 16:26:55 GMT 1
Och gör nu om allt för SHA256... (obs, skämt)
|
|
henq
New Member
Posts: 21
|
Post by henq on Mar 4, 2018 21:45:11 GMT 1
*plockar fram kvantdatorn ur garderoben*
|
|