{"id":20588405,"url":"https://github.com/josue-lubaki/cipherblockchaining","last_synced_at":"2026-04-20T15:05:19.977Z","repository":{"id":103075272,"uuid":"336148196","full_name":"josue-lubaki/CipherBlockChaining","owner":"josue-lubaki","description":"Chiffrement des textes avec la methode CBC (Cipher Block Chaining)","archived":false,"fork":false,"pushed_at":"2021-11-03T05:56:36.000Z","size":673,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-06T13:22:09.420Z","etag":null,"topics":["cbc-aes-encryption","cipher-algorithms","encryption-decryption"],"latest_commit_sha":null,"homepage":"","language":"C#","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/josue-lubaki.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-02-05T03:04:09.000Z","updated_at":"2023-04-12T00:01:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"cf706a0b-f9fa-4f15-bfce-c372ab037a83","html_url":"https://github.com/josue-lubaki/CipherBlockChaining","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/josue-lubaki/CipherBlockChaining","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josue-lubaki%2FCipherBlockChaining","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josue-lubaki%2FCipherBlockChaining/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josue-lubaki%2FCipherBlockChaining/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josue-lubaki%2FCipherBlockChaining/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josue-lubaki","download_url":"https://codeload.github.com/josue-lubaki/CipherBlockChaining/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josue-lubaki%2FCipherBlockChaining/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32052562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cbc-aes-encryption","cipher-algorithms","encryption-decryption"],"created_at":"2024-11-16T07:24:35.736Z","updated_at":"2026-04-20T15:05:19.952Z","avatar_url":"https://github.com/josue-lubaki.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"DESCRIPTION\n    Il vous est demandé de coder une classe permettant de chiffrer un message de texte en utilisant\n    la méthode Cipher Block Chaining (CBC), et comme fonction de chiffrement des blocs un\n    chiffrement par transposition et ce, en utilisant exactement la stratégie décrite dans les notes de\n    cours (voir exemple « ce cours de mathématiques est très intéressant »). Nous allons cependant\n    introduire une variante afin de simplifier quelque peu le processus.\n    Pour cela, vous devez créer une classe statique « Chiffrement » possédant deux méthodes :\n        - String Chiffrer(String message, String cle)\n        - String Dechiffrer(String message, String cle)\n        \nPour le chiffrement :\n    - Dans un premier temps, le message au complet devra subir un chiffrement par\n    transposition en utilisant une clé de transposition au choix de l’utilisateur, composée\n    d’une chaîne de caractères composée d’une série de nombres séparés par un caractère\n    d’espacement (p. ex. « 1 4 6 5 3 2 »). La quantité de nombres dans la série donnera par\n    le fait même le nombre de colonnes de transposition.\n    Considérez que l’utilisateur entrera une série adéquate.\n    - Dans un deuxième temps, vous devez utiliser la méthode de chiffrement par bloc CBC sur\n    le message précédemment transposé en considérant que 1 caractère (1 octet) = 1 bloc.\n    La clé (fonction) de chiffrement ayant déjà été appliquée préalablement sur le message\n    en entier, vous n’avez qu’à effectuer l’opération XOR entre la valeur du bloc clair avec la\n    valeur du bloc chiffré précédent (ou le vecteur d’initialisation pour le premier bloc à\n    chiffrer).\n    \nCela implique que vous devrez transformer la chaîne de caractères comportant le\nmessage en un tableau d’octets (byte[]) qui constituera l’ensemble des blocs clairs. Le\ntableau d’octets chiffrés que vous aurez produit suite au chiffrement par CBC devra être\nreformé en une chaîne de caractère que vous retournerez à l’appelant et qui formera ainsi\nle message chiffré.\n\nPour le déchiffrement :\n    - Vous devez d’abord décomposé le message chiffré en un tableau d’octets, sur lequel vous\n    appliquez l’algorithme de déchiffrement avec la méthode CBC sur chacun des blocs\n    d’octet. Cela aura alors pour effet de reconstituer le message transposé.\n    - Puis, vous devez appliquer la transposition inverse en respectant la clé de transposition\n    fournie par l’utilisateur et retourner le message résultant. Avec la même clé detransposition utilisée pour le chiffrement (et un peu de « chance » !), le message retourné\n    devrait être celui d’origine.\n    \nPrécisions supplémentaires:\n    Le vecteur d’initialisation (VI), si vous le souhaitez, des raisons de simplification, peut être\n    prédéterminé et le même à l’intérieur des méthodes de chiffrement et déchiffrement et non\n    pas déterminé au hasard.\n    La clé de transposition sera la clé transmise lors du chiffrement et la même clé devra être fournie\n    lors du déchiffrement afin de pouvoir bien ordonner les colonnes et reconstituer le message\n    d’origine ligne par ligne.\n    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosue-lubaki%2Fcipherblockchaining","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosue-lubaki%2Fcipherblockchaining","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosue-lubaki%2Fcipherblockchaining/lists"}