{"id":21115920,"url":"https://github.com/faissalelfid/java-rmi-digital-signature","last_synced_at":"2025-06-10T13:34:00.055Z","repository":{"id":114279735,"uuid":"378893992","full_name":"FaissalElfid/java-rmi-digital-signature","owner":"FaissalElfid","description":"L'utilisation de la signature digital de java.security.Signature (DSA) afin de créer une application de vote (voters vote on candidats)","archived":false,"fork":false,"pushed_at":"2021-06-21T12:33:20.000Z","size":799,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T10:33:51.544Z","etag":null,"topics":["digital-signature","java","rmi","rmi-client","rmi-server"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FaissalElfid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-21T10:33:36.000Z","updated_at":"2022-02-03T10:06:39.000Z","dependencies_parsed_at":"2023-07-16T01:31:54.005Z","dependency_job_id":null,"html_url":"https://github.com/FaissalElfid/java-rmi-digital-signature","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaissalElfid%2Fjava-rmi-digital-signature","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaissalElfid%2Fjava-rmi-digital-signature/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaissalElfid%2Fjava-rmi-digital-signature/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaissalElfid%2Fjava-rmi-digital-signature/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FaissalElfid","download_url":"https://codeload.github.com/FaissalElfid/java-rmi-digital-signature/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaissalElfid%2Fjava-rmi-digital-signature/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259085353,"owners_count":22803186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digital-signature","java","rmi","rmi-client","rmi-server"],"created_at":"2024-11-20T02:02:50.691Z","updated_at":"2025-06-10T13:34:00.031Z","avatar_url":"https://github.com/FaissalElfid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# java-rmi-digital-signature\n\nLe but de ce projet est de créer un système de votes qui permet à des électeurs de voter les candidats en toutes sécurité et en gardant leur anonymat. \nPour ce faire je vais utiliser la signature digital de java.security.Signature (DSA).\n\n## Table des matières\n1. [Principes généraux](#general-principles)\n- 1.a. [Architecture de signature](#architecture)\n- 1.b. [Préparation du message signé](#envoie)\n- 1.c. [Réception du message signé](#reception)\n2. [Commentaires](#comment)\n3. [Exécuter le projet](#test)\n\n\u003ca name=\"general-principles\"\u003e\u003c/a\u003e\n## 1. Principes généraux\nLa définition de la signature électronique :\n\u003eLa signature numérique est un mécanisme permettant de garantir l'intégrité d'un document électronique et d'en authentifier l'auteur, par analogie avec la signature \n\u003emanuscrite d'un document papier.\n\n\u003ca name=\"architecture\"\u003e\u003c/a\u003e\n### 1.a Architecture de signature\nL’électeur chiffre le message d’une façon asymétrique constitué d'une fonction de chiffrement C et qui a une fonction de déchiffrement D. J’utilise une fonction de hachage que nous noterons H.\nPour ce chiffrement, le système génère une clé privée Kpr et une clé publique Kpb pour chaque électeur (voter) :\nIl garde la clé privée Kpr secrète.\nD, H et Kpb n'ont pas besoin d'être secrets. C doit par contre rester secret.\n\n\u003ca name=\"envoie\"\u003e\u003c/a\u003e\n### 1.b Préparation du message signé\nL’électeur prépare le message signé, pour cela :\nIl produit un condensat du message par la fonction de hachage choisie. Il chiffre ce condensat grâce à la fonction de chiffrement C en utilisant sa clé privée Kpr. Le résultat obtenu est la signature du message : SM.\nIl transmet la clé publique Kpb, le message en claire et la signature du message SM par un canal (RMI) sachant que le serveur connait la fonction de hachage H.\nL’électeur transmet Msigné, le message signé vers le serveur par un canal non sécurisé.\n\n\u003ca name=\"reception\"\u003e\u003c/a\u003e\n### 1.c Réception du message signé\nLe serveur réceptionne le message signé. Pour vérifier l'authenticité du message :\n\nIl produit un condensat du texte clair en utilisant la fonction de hachage H(M) .\nIl déchiffre la signature en utilisant la fonction de déchiffrement D avec la clé publique Kpb soit : DSm=D(Kpb,SM) ;\nIl compare le résultat DSm avec H(M) reçu.\nDans le cas où la signature est authentique, DSm et H(M) sont égaux car, de par les propriétés du chiffrement asymétrique on attribue le vote au candidat.\n\n\u003ca name=\"comment\"\u003e\u003c/a\u003e\n## 2. Commentaires\nVous allez trouver dans chaque fichier java des commentaires qui explique l’objectif de chaque méthode utilisée.\n\n\u003ca name=\"test\"\u003e\u003c/a\u003e\n## 3. Exécuter le projet\n\n* Exécuter le Serveur en permier\n![plot](./Screenshot/CaptureServer.jpg)\n\n* Exécuter le client 1 (voter 1)\n![plot](./Screenshot/CaptureClient1.jpg)\n\n* Exécuter le client 2 (voter 2)\n![plot](./Screenshot/CaptureClien2.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaissalelfid%2Fjava-rmi-digital-signature","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaissalelfid%2Fjava-rmi-digital-signature","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaissalelfid%2Fjava-rmi-digital-signature/lists"}