{"id":26103691,"url":"https://github.com/andrenevesgomes/criptografia","last_synced_at":"2025-03-09T20:42:03.378Z","repository":{"id":38366673,"uuid":"319072164","full_name":"andrenevesgomes/Criptografia","owner":"andrenevesgomes","description":"No âmbito da disciplina de Criptografia foi-nos requisitado a realização de um trabalho de grupo centrado na realização de um algoritmo de encriptação de forma a refletir todo o conhecimento adquirido ao longo das aulas realizadas.","archived":false,"fork":false,"pushed_at":"2023-05-23T08:14:10.000Z","size":14440,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-05-23T09:27:18.576Z","etag":null,"topics":["cryptography","istec","school-project","scytale-cipher"],"latest_commit_sha":null,"homepage":"https://criptografia.azurewebsites.net","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrenevesgomes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-06T15:59:51.000Z","updated_at":"2021-11-24T09:49:26.000Z","dependencies_parsed_at":"2023-02-02T06:31:13.658Z","dependency_job_id":null,"html_url":"https://github.com/andrenevesgomes/Criptografia","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrenevesgomes%2FCriptografia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrenevesgomes%2FCriptografia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrenevesgomes%2FCriptografia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrenevesgomes%2FCriptografia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrenevesgomes","download_url":"https://codeload.github.com/andrenevesgomes/Criptografia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242750781,"owners_count":20179256,"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":["cryptography","istec","school-project","scytale-cipher"],"created_at":"2025-03-09T20:42:02.736Z","updated_at":"2025-03-09T20:42:03.371Z","avatar_url":"https://github.com/andrenevesgomes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n![Website](https://img.shields.io/website?down_color=red\u0026down_message=offline\u0026style=for-the-badge\u0026up_color=green\u0026up_message=online\u0026url=https%3A%2F%2Fcriptografia.azurewebsites.net%2F)  ![GitHub Release Date](https://img.shields.io/github/release-date/andrenevesgomes/Criptografia?style=for-the-badge)\n\n\u003c/div\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.istec.pt/\" target=“_blank”\u003e\n    \u003cimg width=\"35%\" src=\"https://github.com/andrenevesgomes/Criptografia/blob/master/Criptografia/Img/logo.png\" alt=\"Logo Projecto\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eCriptografia\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Criação do algoritmo para a cifra \u003cstrong\u003eCítala Espartana\u003c/strong\u003e.\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/andrenevesgomes/Criptografia\" target=“_blank”\u003e\u003cstrong\u003eExplorar os docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://criptografia.azurewebsites.net/\" target=“_blank”\u003eVer Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/andrenevesgomes/Criptografia/issues\" target=“_blank”\u003eReportar Bug\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n# Tabela de Conteúdos\n\n* [Sobre o Projeto](#sobre-o-projeto)\n  * [Desenvolvimento](#desenvolvimento)\n    - [Definição](#definição)\n    - [Funcionamento](#funcionamento)\n    - [Utilização](#utilização)\n    - [O Algorítmo](#o-algorítmo)\n  * [Pseudo-Código](#pseudo-código)\n  * [Algoritmo em funcionamento](#algoritmo-em-funcionamento)\n  * [Bibliotecas Usadas](#bibliotecas-usadas)\n  * [Conclusão](#conclusão)\n* [Bibliografia](#bibliografia)\n* [Licença](#licença)\n\n\n\n\u003c!-- SOBRE O PROJETO --\u003e\n# Sobre o Projeto\n\n![HomePage](https://user-images.githubusercontent.com/48434290/103387914-4e418f00-4afe-11eb-864c-aee90f26b695.png)\n\nNo âmbito da disciplina de Criptografia foi-nos requisitado a realização de um\ntrabalho de grupo centrado na realização de um algoritmo de encriptação de forma a\nrefletir todo o conhecimento adquirido ao longo das aulas realizadas.\n\n# Desenvolvimento\n\n## Definição:\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Skytale.png/1200px-Skytale.png\" align=\"right\" width=\"350\"\u003e\nUma cítala é um sistema de criptografia utilizado pelos éforos espartanos para envio\nde mensagens secretas.\n\n## Funcionamento:\nO sistema consistia em duas varas da mesma espessura que estavam cada uma na\nposse de um dos participantes na comunicação. Para enviar uma mensagem era\nenrolada uma tira de forma espiral a um dos bastões e era escrita a mensagem\nlongitudinalmente, de forma que em cada volta da tira aparecesse uma letra de cada\nvez. Uma vez escrita a mensagem, a tira era desenrolada e era enviada ao recetor,\nque só tinha que a enrolar no bastão gémeo para ler a mensagem original.\n\n## Utilização:\nOs gregos antigos, e em particular os espartanos, utilizaram este sistema de cifra de\ntransposição para comunicar nas campanhas militares.\n\n## O Algorítmo:\nQuando se trata de encriptar uma mensagem com este mecânismo, podemos pensar na cítala como uma matriz retangular da qual conhecemos uma das suas medidas, por exemplo, o comprimento dado ao número de voltas que a fita dá à haste. Para simplificar, iremos denominar este parâmetro por L.\n\nCom base no parâmetro L, iremos gerar uma matriz com a dimensão `N x L`, onde `N` é derivado de `L` e do comprimento da mensagem. Prosseguimos para preencher a matriz longitudinalmente, saltando para uma nova linha à medida que a anterior é concluída, até termos terminado a mensagem. Em seguida, procedemos à transposição da matriz e recuperamos o texto longitudinalmente, mantendo os espaços, se houver.\n\nPor exemplo, dado o texto `WE ARE UNDER ATTACK` e um comprimento de `4`, a matriz inicial seria a seguinte:\n\n```\n| W | E |   | A |\n| R | E |   | U |\n| N | D | E | R |\n| A | T | T | A |\n| C | K |   |   |\n```\n\nDepois de transposta, iria ficar da seguinte forma:  \n\n```\n| W | E | E | T |\n| E |   | R | A |\n|   | U |   | C |\n| A | N | A | K |\n| R | D | T |   |\n```\n\nPortanto, nossa mensagem encriptada seria `WEETE RA U CANAKRDT`.\n\nPara decifrar a mensagem, o processo seria o mesmo, mas ao contrário: partimos de uma matriz de dimensões `L x N`, seguindo a mesma lógica em que `N` é calculado com base no parâmetro `L` e no comprimento do mensagem.\n\nSeguindo a mesma metodologia, a matriz é preenchida, transposta e o texto recuperado longitudinalmente, respeitando os espaços.\n\n# Pseudo-Código\n\n**_CÓDIGO ENCRIPTAR_** 🔒\n```\n/// \u003csummary\u003e\n/// Esta função irá permitir a encriptação de uma frase que o user insira.\n/// \u003c/summary\u003e\n/// \u003cparam name=\"plainText\"\u003eTexto que o user irá inserir na textbox\u003c/param\u003e\n/// \u003cparam name=\"numOfRows\"\u003eComprimento dado ao número de voltas que a fita dá na haste\u003c/param\u003e\n/// \u003creturns\u003eIrá retornar o texto encriptado\u003c/returns\u003e\n\npublic static string ScytaleEncode(string plainText, int numOfRows) {\n  string encodedText = \"\";\n  if (numOfRows \u003e= plainText.Length || numOfRows \u003c= 0) {\n    return plainText;\n  } else {\n    while (plainText.Length % numOfRows != 0) {\n      plainText += \" \";\n    }\n\n    int numOfCols = plainText.Length / numOfRows;\n    for (int i = 0; i \u003c numOfCols; i++) {\n      for (int y = i; y \u003c plainText.Length; y += numOfCols) {\n        encodedText += plainText[y];\n      }\n    }\n  }\n  return encodedText;\n}\n```\n**_CÓDIGO DESENCRIPTAR_** 🔓\n```\n/// \u003csummary\u003e\n/// Esta função irá permitir a desencriptação de uma frase que o user insira.\n/// \u003c/summary\u003e\n/// \u003cparam name=\"encodedString\"\u003eTexto que o user irá inserir na textbox\u003c/param\u003e\n/// \u003cparam name=\"numOfRows\"\u003eComprimento dado ao número de voltas que a fita dá na haste\u003c/param\u003e\n/// \u003creturns\u003eIrá retornar o texto desencriptado\u003c/returns\u003e\n\npublic static string ScytaleDecode(string encodedString, int numOfRows) {\n  string decodedString = \" \";\n  int numOfCols = encodedString.Length / numOfRows;\n  decodedString = ScytaleEncode(encodedString, numOfCols);\n  return decodedString;\n}\n```\n\n\n# Algoritmo em funcionamento\n![Experimentar a Cítala](https://user-images.githubusercontent.com/48434290/103378842-9dc29380-4adb-11eb-867d-fa2ca56de1e3.png)\n\n\n# Bibliotecas Usadas\n* [Bootstrap](https://getbootstrap.com)\n* [JQuery](https://jquery.com)\n* [Popper.js](https://popper.js.org/)\n* [Themify Icons](https://themify.me/themify-icons)\n* [Font Awesome](https://fontawesome.com)\n* [Animate.css](https://animate.style/)\n* [Owl Carousel 2](https://owlcarousel2.github.io/OwlCarousel2/)\n\n\n# Conclusão\nCom este trabalho ficámos a conhecer a cifra Scitala Espartana. Para este exercício,\nconhecimentos de programação não eram suficientes, foi necessário entender a cifra\npara que fosse possível “traduzi-la” para uma linguagem de programação. Foi\nbastante interessante transformar um objeto físico de criptografia num algoritmo, e\najudou a solidificar o nosso pensamento lógico.\n\n\n\u003c!-- BIBLIOGRAFIA --\u003e\n# Bibliografia\n\n* Stack Overflow - Where Developers Learn, Share, \u0026 Build Careers. (2020). Disponível em: https://stackoverflow.com/\n* W3Schools Online Web Tutorials. (2020). Disponível em: https://www.w3schools.com/\n* Santos, António (2019). Criptografia: Segurança e Vulnerabilidade. Licenciaturas, Instituto Superior De Tecnologias Avançadas\n* Wikipedia. (2020). Cítala . Disponível em: https://pt.wikipedia.org/wiki/C%C3%ADtala\n\n\n\u003c!-- LICENSE --\u003e\n# Licença\n\nAll code from this project is licensed under a MIT License.\nIf a picture is originally taken or made by us, then it is copyrighted. Otherwise, it keeps the original license.\nEverything else is copyrighted with © all rights reserved.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrenevesgomes%2Fcriptografia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrenevesgomes%2Fcriptografia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrenevesgomes%2Fcriptografia/lists"}