Coder Social home page Coder Social logo

tiracryption's Issues

Vertaisarviointi

Koodi ladattu MA 26.11 n. KLO 14:00

Hei,

Koodi näyttää olevan sen verran hyvälaatuista, että vaikea keksiä parannettavaa. Koitan heittää jotain ideoita että tulee jotain sanottavaa.

  1. Salaustavoissa näyttää olevan kaikissa "encrypt ja decrypt" -metodit. Voisiko näille siis kehitellä rajapinnan, jonka takana oikeat luokat ovat? Konkreettinen luokka sitten perii encryptin ja decryptin. Käytössä sitten tehdään oikean tekniikan toteuttava olio, tai oikean tekniikan tunnus annetaan muuttujana.

  2. Voitaisiin ajatella, että käyttäjän näkökulmasta tekniset detaljit eivät kiinnosta vaan tarkoituksena on esim. "lähettää salattu kuva kaverille". Siten AES- ja RAS- salauksen voisi jo sovelluslogiikan tasolla yhdistää, niin ettei niitä tarvitse tehdä manuaalisesti. Nykyisten luokkien päällä olisi sitten tavallaan uusi "kerros" joka yhdistelisi eri ominaisuudet käyttäjän tarpeiden mukaan.

  3. Encryptin jälkeenhän on vain yksi tapa decryptata, eli decryptauksenkaan "vaihtoehto" ei tarvitse näkyä käyttäjälle. Jos salatussa tiedostossa olisi joku tapa identifioida salaustapa, niin decryptaus -metodi voisi poimia tämän automaattisesti.

  4. Tästä en ole enää varma, mutta muistelen että joskus suositeltiin tehtävän pelkkiä metodeita todellisten olioiden sijaan (eli ilman olioiden luomista käytetään public static -tyyppisiä metodeita suoraan luokasta). Esimerkiksi RSA -salauksen teossa on seuraava prosessi:

    • RSA rsa = newRSA(newRSAKey(Paths.get(args[1])));
    • rsa.encryptFile(Paths.get(args[2]), Paths.get(args[2] + ".encrypted"));

RSA -tiedoston jälkeenhän ohjelma on "valmis" eli luokissa ei sinänsä ole mitään henkilökohtaista "pysyvää". Mitä jos suoraan parametreja kuljettamalla voisi vaan kutsua heti metodia RSA.encryptFile? Koitin etsiä tästä periaatteesta googlella mutta en löytänyt joten voin kuvitella omiani ja oma tapasi on parempi.

Muuta yleistä:

  1. Etusivun ohjeet toimivat, ja onnistuin luomaan jacoco-testit. Koodikattavuudesta tietysti osaat lukea itsekkin. Ainoa jossa näyttää olevan enemmän punaista on "RSAKeygen.java" luokka.

  2. Käyttöohjeet toimivat.

  3. Javadoc selityksiä ei ollut oikein missään.

  • Itse laitoin myös hmtl -sivut (toimii javadocille ja jacocolle) suoraan tarkasteltavaksi githubin kautta. Jos näin haluaa tehdä niin käytetään githubin .io -osoitetta. Esimerkiksi jos javadoc -tiedostot ovat projektin juuressa niin web-osoite on: käyttäjä.github.io/Projekti/javadoc/index.html. Prosessista saa vielä automaattisen jos generoi suoraan oikeaan linkkipaikkaan ja sallii gitin uploadata generoidut filut.
  1. Mainin ajamalla tapahtuva teksti-UI on vähän epäselvä, mutta se tuskin on lopullinen joten en sitä lähde purkamaan.

  2. Käyttämättömiä importteja esim. RSA.java

Vertaisarviointi

Moi,

mielenkiintoinen aihe. Valitettavasti joudun lomamatkan vuoksi arvioimaan jo tässä vaiheessa viikkoa, joten suuri osa tämän viikon työstä jää minulta näkemättä. Erityisesti BigInteger-luokan toteutus olisi ollut kiinnostava, koska se on niin olennainen osa tätä projektia. Projekti buildasi hyvin ja käyttöohjeet ovat esimerkilliset. Homma toimi hyvin ohjeen mukaan. En ole aikaisemmin tutustunut näihin alogritmeihin syvällisemmin, joten sainpahan mahdollisuuden lukea Wikipediaa.

Projektirakenne on hyvä ja koodi itsessään on selkeää ja hyvin ymmärrettävää, joten parannusehdotuksia joutuu lähinnä keksimällä keksimään. JavaDoceja puuttuu paikoittain ja itse varmaan kommentoisin myös algoritmien toimitaa metodien sisällä vähän tarkemmin, mikäli joku muukin osaamaton lukija sattuu paikalle. Uskon, että nämä ovat jo muutenkin työlistalla. Käyttöliittymässä voisi olla mahdollisuus tehdä AES+RSA suoraan PGP-tyylisesti, vaikka käyttöliittymä ei varsinaisesti olekaan tämän kurssin ydinsisältöä.

TiraRandom toimii satunnaisesti, kuten pitääkin.

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.