vesulius / rsa Goto Github PK
View Code? Open in Web Editor NEWRSA public-key cryptosystem
RSA public-key cryptosystem
Ladattu 16.10 klo 17:00
Törmäsin heti alkuun samaan ongelmaan kuin edellinen vertaisarvioija, eli en saannut ohjelmaa toimimaan. Gradle on itsellekin uusi, joten en valitettavasti onnistunut selvittämään mistä ongelma johtuu. Esim. testiluokissa netbeans valittaa, että pakettia org.junit.jupiter.api ei ole olemassa.
Koodi näyttää muuten oikein hyvältä ja tasalaatuiselta. Sitä on helppo lukea ja lähes jokaisessa metodissa on myös javadoc lisättynä. Plussaa myös asiaa selventävistä kommenteista koodin sisällä. Luokat ja metodit on myös järjestelty asiaankuuluvasti.
Edelliseen arviointiin ei sinänsä itselläni ole lisättävää, hienoa myös nähdä että SecureRandom ehdotukseen on tartuttu!
Edellistä arvioijan tapaan kaipaisin hieman laajempaa testausta ohjelmalle.
Hyvältä vaikuttaa!
Ohjelma ladattu vertaisarviointia varten 9.10. klo 19:46.
Heti alkuun täytyy mainita, että yrityksestä huolimatta en saanut ohjelmaa toimimaan omalla tietokoneellani. En ole ennen käyttänyt gradlea, mutta yritin gradlen dokumentaatiota seuraamalla saada ohjelmaa pyörimään ja lähin tulos oli se, että ohjelma lähti käyntiin ja instructions-metodin komennot tulostuivat, mutta ohjelma pysähtyi heti NullPointerException-virheeseen UI-luokan rivillä 16, eli näköjään sillä rivillä millä käyttäjän pitäisi syöttää haluttu komento. Tämä on todennäköisesti omaa osaamattomuuttani, mutta ajattelin sen silti tässä mainita.
Koodi on hyvin kirjoitettu ja selkeästi jäsennelty, jonka ansiosta sitä on helppo seurata ja ymmärtää. RSA-salaukselle ominaiset muuttujat (p, q, yms.) ja myös niiden laskemiseen käytettyä matematiikkaa on selitetty kommenteilla. Ohjelman eri osa-alueille on tehty järkevät luokat ja jokaisella luokalla on oma selkeä tehtävänsä. Myös luokkien sisällä koodia on jäsennelty hyvin metodeihin. Javadoc on kaikkien olennaisten luokkien osalta tehty ja sekin puolestaan helpottaa koodin ymmärtämistä.
Avaimien generointi on implementoitu hyvin ja lopputuloksena on kaksi 64-bittistä alkulukua. Tässä huomasin yhden korjattavan asian: Random-luokan käyttö satunnaisen BigInteger-luvun generoimiseen. Projektisi määrittelydokumentissa on mainittu, että ohjelmalla halutaan myös testata mahdollisesti RSA-salauksen turvallisuutta. Random-luokka ei ole kaikkein paras keino tähän, sillä se ei tuota turvallisesti satunnaisia lukuja. Kannattaa sen sijaan käyttää SecureRandom-luokkaa (aihetta selitetty täällä: https://stackoverflow.com/questions/11051205/difference-between-java-util-random-and-java-security-securerandom). Tämän muutoksen tekeminen on onneksi niinkin yksinkertaista kuin vain vaihtaa luokan nimeä.
Viestit salataan oikein ja niistä luodaan tiedosto, mikä on mukava lisä ja helpottaa ohjelman käyttöä “tositilanteessa”.
Testejä voisi mielestäni hieman laajentaa. Esim. Tässä muutama mahdollinen testitapaus:
• Voiko viestin purkaa väärällä avaimella
• Generoiko ohjelma joka kerta varmasti eri avaimen (luo esim. kaksi julkista avainta ja tarkista, että ne eivät ole identtiset)
• Kaksi salattua viestiä eivät ole identtiset mikäli ne on salattu eri avaimella
Ohjelma näyttää erittäin hyvältä ja vertaisarvioinnissani mainitut mahdolliset muutokset eivät vie paljoa aikaa. Oikein hyvää työtä!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.