Ingenierie par la methodes UP d'un systeme de certification des documents numerique a l'aide de la cryptographiepar Elie Musampa Université protestante de Lubumbashi - Ingenierie des systemes d'information 2023 |
BIBLIOGRAPHIEBCdiploma. (2023, janvier 3). Comment et pourquoi authentifier un diplome grace au numerique. la fraude aux diplomes. IBM. (2023, Aout 14). Présentation de la création de certificats numériques. Récupéré sur IBM: https://www.ibm.com/docs/fr/rpt/10.5.0?topic=overview-digital-certificate-creation Raport-gratuit.com. (2019). Notion générale sur la cryptographie. Récupéré sur Raport-gratuit.com: https://www.rapport-gratuit.com/notion-generale-sur-la-cryptographie/ Verlhiac, N. (2022, Avril 14). Fonctions de hachage et valeur hachées expliquées simplement. Récupéré sur Ostraca.fr: https://blog.ostraca.fr/blog/fonctions-de-hachage/ Yousign. (20203, Septembre 6). Le blog de la digitalisation des PME . Récupéré sur Yousign.com. 45 ANNEXELe résultat de l'implémentation de ce travail et afficher ici. Nous cette partie contient du code source ainsi que les différentes interfaces de l'application. 4.1.1.3 Le code SourcesCette partie et réserve au code source les plus important pour la certification de document numérique. Nous allons afficher le code source de l'algorithme SHA-256. Nous allons expliquer comment cette algorithme fonctionnement sur la certification de ficher numérique. Code : /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined * in FIPS 180-2 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * */ var inherits = require('inherits') var Hash = require('./hash') var Buffer = require('safe-buffer').Buffer var K = [ 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x39565B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 46 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0x4B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 ] var W = new Array(64) function Sha256 () { this.init() this._w = W // new Array(64) Hash.call(this, 64, 56) } inherits(Sha256, Hash) Sha256.prototype.init = function () { 47 this._a = 0x6a09e667 this._b = 0xbb67ae85 this._c = 0x3c6ef372 this._d = 0xa54ff53a this._e = 0x510e527f this._f = 0x9b05688c this._g = 0x1f83d9ab this._h = 0x5be0cd19 return this } function ch (x, y, z) { return z " (x & (y " z)) } function maj (x, y, z) { return (x & y) | (z & (x | y)) } function sigma0 (x) {
} 48 function gamma0 (x) { return (x >>> 7 | x << 25) " (x >>> 18 | x << 14) " (x >>> 3) } function gamma1 (x) { return (x >>> 17 | x << 15) " (x >>> 19 | x << 13) " (x >>> 10) } Sha256.prototype._update = function (M) { var W = this._w var a = this._a | 0 var b = this._b | 0 var c = this._c | 0 var d = this._d | 0 var e = this._e | 0 var f = this._f | 0 var g = this._g | 0 var h = this._h | 0 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 for (var j = 0; j < 64; ++j) { var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 var T2 = (sigma0(a) + maj(a, b, c)) | 0 h = g 49 g = f f = e e = (d + T1) | 0 d = c c = b b = a a = (T1 + T2) | 0 } this._a = (a + this._a) | 0 this._b = (b + this._b) | 0 this._c = (c + this._c) | 0 this._d = (d + this._d) | 0 this._e = (e + this._e) | 0 this._f = (f + this._f) | 0 this._g = (g + this._g) | 0 this._h = (h + this._h) | 0 } Sha256.prototype._hash = function () { var H = Buffer.allocUnsafe(32) H.writeInt32BE(this._a, 0) H.writeInt32BE(this._b, 4) H.writeInt32BE(this._c, 8) H.writeInt32BE(this._d, 12) H.writeInt32BE(this._e, 16) H.writeInt32BE(this._f, 20) 50 H.writeInt32BE(this._g, 24) H.writeInt32BE(this._h, 28) return H } module.exports = Sha256 Explication: Ce code est une implémentation en JavaScript de l'algorithme de hachage sécurisé SHA-256. Il s'agit d'une fonctionnalité de hachage cryptographique utilisée pour générer des condensés de taille fixe à partir de données d'entrée. Ce code est une implémentation en JavaScript de l'algorithme de hachage sécurisé SHA-256. L'algorithme SHA-256 est utilisé pour générer des condensés (hash) de taille fixe à partir de données d'entrée. Le code définit une classe appelée "Sha256" qui hérite de la fonctionnalité de la classe "Hash". La classe "Sha256" contient des méthodes pour initialiser les variables internes, mettre à jour le hachage avec les données d'entrée et générer le résultat final du hachage. Le code utilise également des fonctions auxiliaires pour effectuer les opérations nécessaires dans le processus de hachage. En résumé, ce code permet de calculer le hachage SHA-256 d'un ensemble de données en utilisant JavaScript. Les interfaces de l'application Nous allons maintenant présenter les différentes interfaces de l'application. ? Page d'accueil Figure 12: Page d'acceuil Figure 13 : Interface de application 51 ? Page Menu Figure 14: Interface Menu ? Page Création de Compte : Figure 15: Interface de creation de compte 52 ? Page S'auttentifier Figure 16: Interface d'authentification 53 Figure 17: interface d'inscription 54 Figure 18: page d'uploading ? Page Uploader document Lorsqu'un admin upload un document, dans notre cas prenons un exemple d'une liste d'effectif de étudiants en Bac 3 isi. L'admin ajoute les noms de l'utilisateur, Remplis la description de l'établissement qui a fournis cette application. Et choisie l'emplacement du document et l'upload. Alors comment est-ce que le document obtient le une clé Hash ? Pour répondre à cette question nous allons nous diriger dans le code source. Alors le premier constat que nous allons faire ce que, une clé Hash a étais attribuer juste après que nous avons Uploader le donner. Cette clé et privée, elles ne peuvent jamais se ressemble avec une autre. Le résultat et démontre sur la Figure 28 et 29. Sur cette image nous voyons dans le terminal le résultat de l'upload. Ce résultat montre la description du processus. Figure 19: resultat D'uploading 55 Figure 20: resultat d'uploading Figure 21: page de verificataion recruteur 56 Figure 22: résultat de vérification d'un recruteur |
|