An open API service indexing awesome lists of open source software.

https://github.com/theduardomaciel/cryptosia-web

A platform for generating public and private keys that work in sync, ensuring simplified security of sensitive messages through RSA encryption.
https://github.com/theduardomaciel/cryptosia-web

c cryptography emscripten nextjs react rsa rsa-cryptography tailwindcss wasm webassembly

Last synced: about 1 month ago
JSON representation

A platform for generating public and private keys that work in sync, ensuring simplified security of sensitive messages through RSA encryption.

Awesome Lists containing this project

README

        


cryptosia



Main projeto cover.

## 💻 Projeto

Utilize o cryptosia para gerar chaves pública e privada em sintonia, garantindo segurança simplificada de mensagens simples por meio da Criptografia RSA.

> [!NOTE]
> O backend do projeto está disponível em: [https://github.com/theduardomaciel/cc-md/tree/master/projeto](https://github.com/theduardomaciel/cc-md/tree/master/projeto)


## ✨ Tecnologias

| Frontend | Backend |
| ------------------- | ----------- |
| HTML | WebAssembly |
| CSS | Emscripten |
| TypeScript | C |
| Next.js | |
| TailwindCSS | |
| Radix & Radix Icons | |


## 💽 Como compilar o backend em C

> [!IMPORTANT]
> O passo a passo disponível a seguir refere-se à compilação em um dispositivo Windows. Para especificações em outros sistemas operacionais, visite a página oficial do [emscripten](https://emscripten.org/docs/getting_started/downloads.html).


- Siga as instruções de instalação do **emscripten** em [emscripten.org/docs/getting_started/downloads.html](https://emscripten.org/docs/getting_started/downloads.html)
- Abra o terminal `Emscripten Windows Command Prompt (emcmdprompt.bat)` disponível no diretório `\emscripten\emsdk` e navegue até `\upstream\emscripten/`
- Com o terminal no diretório correto, compile o arquivo `cryptosia.c` com o seguinte comando:

```
emcc -O3 "[diretório do arquivo C]\cryptosia.c" -o "[diretório de saída]\cryptosia.js" -lm -lgmp --profiling-funcs -s MODULARIZE -s WASM=1 -s EXPORT_NAME="CRYPTOSIA" -s ENVIRONMENT="web" -s EXPORTED_FUNCTIONS=[nome das funções antecipados de "_", sem espaços e separados por "," como em "_int_sqrt"] EXPORTED_RUNTIME_METHODS=ccall,cwrap,UTF8ToString,stringToNewUTF8
```

> Exemplo:

```
emcc -O3 -o cryptosia.js cryptosia.c ${HOME}/opt/lib/libgmp.a -I${HOME}/opt/include -s MODULARIZE -s WASM=1 -s EXPORT_NAME="CRYPTOSIA" -s ENVIRONMENT="web" -s EXPORTED_FUNCTIONS=_n_factor,_publicKey_totient,_publicKey_e,_privateKey_d,_mdc,_cryptosia_encrypt,_cryptosia_decrypt -s EXPORTED_RUNTIME_METHODS=ccall,cwrap,UTF8ToString,stringToNewUTF8 -lm
```

> [!NOTE]
> _O argumento `-O3` é utilizado para otimizar o código. Portanto, ao utilizá-lo, prepare-se para tempos de compilação maiores.
Para tempos mais rápidos, utilize níveis de otimização menor como -O1, O2 ou Oz!_
> Além da otimização de código, as funções exportadas em `EXPORTED_RUNTIME_METHODS` podem ser consultados [neste link](https://emscripten.org/docs/api_reference/preamble.js.html#conversion-functions-strings-pointers-and-arrays)

- Copie os arquivos `cryptosia.js` e `cryptosia.wasm` gerados para a pasta `public` do projeto


## 🚀 Como executar

- Clone o repositório
- Instale as dependências com `npm`, `yarn` ou `pnpm`
- Inicie o servidor com `npm run dev`, `yarn dev` ou `pnpm dev`

Agora você pode acessar [`localhost:3000`](http://localhost:3000) do seu navegador.


## 👥 Grupo

- [ ] [Eduardo Maciel Alexandre](https://github.com/theduardomaciel) - Frontend e backend
- [ ] [David Enéas Ferreira](https://github.com/EneasDavid) - Backend
- [ ] Maria Emily Nayla Gomes da Silva - Fundamentação teórica matemática e apresentações
- [ ] Mariáh Lins Sena - Apresentações e redição de texto
- [ ] Pedro Gabriel Medeiros de Lima - Apresentações e redição de texto
- [ ] Victória Júllya Cabral da Silva - Apresentações e redição de texto


## 📝 Licença

Este projeto utiliza a MIT License. Veja o arquivo de [LICENÇA](LICENSE) para mais detalhes.