GithubHelp home page GithubHelp logo

md5's People

Contributors

decak avatar jamo avatar narkkil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

md5's Issues

Koodikatselmointi

Ladattu 8.6. 22:00

Python ja sen ideologiat eivät välttämättä ole minulle erityisen tuttuja, mutta aina välillä tulee jossain esille python one-linereita, joten tuli mieleen että joitain metodeja voisi kirjoittaa lyhyemmin esimerkiksi:

def toBinaryString(self, string):
    return ''.join('{:08b}'.format(ord(x)) for x in string)

def pad64B(self, length):
    return '{:064b}'.format(length)

def generate_random_binary(self):
    return ''.join(str(randint(0, 1)) for i in range(randint(0, 500)))

Ainakin korvaamalla läpäisee kaikki yksikkötestit, joten jos edellä mainittu koodi ei ole toimiva, niin testit eivät ole kattavia, eikä mikään ole ikinä minun syytä.

Testit varmaan näyttäisivät paremmalta erillisissä tiedostoissa, ainakin näyttäisi että niitä olisi enemmän.

Pythonin md5 moduuli ei toteuta digest_sizea funktiona vaan se on suoraan luettavana intinä. Jos vaastaavuus on tavoite.

On kyse mielipiteestä, mutta olisi puhtaamman näköinen, jos koodi olisi omassa kansioissa.

Run optimization tests

Targets:
Conversion to binary using list comprehensions
Optimise padding algorithm
Padding using list comprehensions (also safety)
Move constants to init
Create a wrapper function for FF,GG,HH,II
Use constant tables to run rounds in a loop

Koodikatselmointi

Ladattu 10.6.2014 klo 19.50

Terve! Otathan huomioon, että oma ohjelmointikokemukseni sivuaineopiskelijana rajoittuu yliopistolla käytyihin kursseihin ja Javaan. Tämä oli ensikosketukseni Pythoniin ja käytin koodin ajamiseen Python 3.4:sta.

Yleisesti

Määrittelydokumentista olisi hyvä saada käsitys siitä, miten toteuttamasi hajautusfunktio käytännössä toimii. Nyt jäi käteen vain kasa metodeja ja sovelluskohteet. Lähteeksi voisit lisätä vaikka tuon http://en.wikipedia.org/wiki/MD5#Algorithm , jonka avulla selviää muillekin pääperiaatteet.

createWordArrayn for-loopit voisi refaktoroida, samoin kuin hash:in Roundien laskemiset. Muulta osin koodi näyttää siistiltä ja sillä on selkeästi nimetyt metodit ja muuttujat, jotka ovat yhteneviä wikipedian materiaalin kanssa. Olisi tietysti mukavaa, jos koodi olisi omassa kansiossaan.

Koodin sisäinen dokumentaatio on pienemmän puoleista, esim. hash:sta en saanut paljoa irti ilman wikipediaa. Muissa metodeissa se kuitenkin oli riittävää.

nmd5.py:n sain ajettua Readme:n ohjeilla ja "Hello World!" tuotti sen mitä pitikin. Nämä ohjeet kannattaakin päivittää docsin käyttöohjeisiin, koska itse suuntasin sinne ensin ja niillä ohjeilla sain ainoastaan testit ajettua läpi. Kaikki testit menivätkin kirkkaasti läpi. Testasin muillakin syötteillä hajautusfunktiota ja näytti antavan ulos hyvinkin erilaista hexaa eli näyttää toimivan niinkuin pitääkin.

Suorituskykytestauksesta en nähnyt minkäänlaista dokumentaatiota, onkohan sille edes tarvetta?

Moduulin toimivuus on testattu 64bit W7:lla.

Loppusanat

Muutamat metodit näyttää vielä olevan toteuttamatta, mutta etköhän saa ne mukavasti tehtyä ennen lopullista palautusta, eli projekti näyttää toteutuvan ajallaan.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.