Giter Club home page Giter Club logo

cifracesar_laboratoria's Introduction

Programa para codificação de e decodifição de mensagem através cifra de César com fator de deslocamento fixo 33 (ROT7)

Início

  • É aberta uma página HTML (index.html) e um prompt é inicializado pedindo que o usuário insira a mensagem que deseja ser criptografada;

  • No arquivo java script é chamada a função para codificação (function cipher(message,lag){}) com parâmetros de mensagem variável e deslocamento fixo (var messageCiphered = cipher('0',33));

  • A função através do prompt pede ao usuário que digite uma mensagem a ser codificada:

var message = prompt("Digite uma mensagem para ser cifrada.\nObs.: A mensagem deve conter apenas letras(sem acentos) e espaços");

  • A mensagem deve conter apenas letras, maiúsculas e minúsculas (sem acentos) e espaços. Enquanto a condição não for satisfeita o processo permanece em loop:

(while (message.search(/[^A-Za-z\s]/) !== -1 || message[0] === undefined) { var message = prompt("Digite uma mensagem para ser cifrada.\nObs.: A mensagem deve conter apenas letras(sem acentos) e espaços"); };

Processamento de codificação – Função cipher

  • Quando a condição de entrada de mensagem é satisfeita são declaradas as variáveis que serão utilizadas no processamento:

    1- Variável que receberá os números dos strings equivalentes na tabela ASCII (var charCodeNum = 0) ; 2- Variável que receberá o valor numérico da codificação (var letterCiphered = 0); 3- Variável do tipo array que recebera os strings da mensagem codificadas (var cipheredMessage = []).

  • O processo de codificação é executado da seguinte maneira:

    1- Uma função percorre cada uma dos strings da mensagem e o valor numérico de obtido pela função String.prototype.charCodeAt() cada posição é guardado em uma variável:

    for (var i = 0; i < message.length; i++) { charCodeNum = message[i].charCodeAt();

    2- Se o número estiver no intervalo ASCII de letras maiúsculas (65 a 90), é aplicada a equação de deslocamento para o número desse intervalo e armazenado em uma variável. O array de mensagem codificada recebe esse número e transforma na letra equivalente da tabela ASCII codificada:

    if (charCodeNum >= 65 && charCodeNum <= 90) { letterCiphered = (charCodeNum - 65 + lag) % 26 + 65; cipheredMessage.push(String.fromCharCode(letterCiphered));

    3- Se o número estiver no intervalo ASCII de letras minúsculas (97 a 122), é aplicada a equação de deslocamento para o número desse intervalo e armazenado em uma variável. O array de mensagem codificada recebe esse número e transforma na letra equivalente da tabela ASCII codificada:

    else if (charCodeNum >= 97 && charCodeNum <= 122) { letterCiphered = (charCodeNum - 97 + lag) % 26 + 97; cipheredMessage.push(String.fromCharCode(letterCiphered)); }

    4- Se o número for equivalente ao espaço na tabela ASCII (32), o array de mensagem codificada recebe a posição 35 convertida para o símbolo #:

    else if (charCodeNum === 32) { letterCiphered = 35; cipheredMessage.push(String.fromCharCode(letterCiphered)); }

    5- Quando a função termina de percorrer as strings da mensagem o processo se encerra e os novos caracteres codificados estão armazenados no array ‘cipheredMessage’;

    6- Nesse momento é retornado a página HTML a mensagem codificada com a utilização da função Array.prototype.join() para unir os caracteres de forma contínua:

    return document.getElementById('messageCiphered').innerHTML = cipheredMessage.join('').

Processamento de decodificação – Função decipher

  • Após a codificação é chamada a função (function decipher(message,lag) {}) para decodificar recebendo como parâmetro a mensagem codificada e o fator de deslocamento fixo 33: var messageDeciphered = decipher(messageCiphered,33);

  • São declaradas as variáveis que serão utilizadas no processamento:

    1- Variável que receberá os números dos strings equivalentes na tabela ASCII (var charCodeNum = 0) ; 2- Variável que receberá o valor numérico da decodificação (var letterDeciphered = 0); 3- Variável do tipo array que recebera os strings da mensagem decodificadas (var decipheredMessage = []).

  • O processo de decodificação é executado da seguinte maneira:

    1- Uma função percorre cada uma dos strings da mensagem e o valor numérico de obtido pela função String.prototype.charCodeAt() cada posição é guardado em uma variável:

    for (var i = 0; i < message.length; i++) { charCodeNum = message[i].charCodeAt();

    2- Se o número estiver no intervalo ASCII de letras maiúsculas (65 a 90), é aplicada a equação de deslocamento para o número desse intervalo e armazenado em uma variável. O array de mensagem decodificada recebe esse número e transforma na letra equivalente da tabela ASCII codificada:

    if (charCodeNum >= 65 && charCodeNum <= 90) { letterDeciphered = (charCodeNum - 90 - lag) % 26 + 90; decipheredMessage.push(String.fromCharCode(letterDeciphered)); }

    3- Se o número estiver no intervalo ASCII de letras minúsculas (97 a 122), é aplicada a equação de deslocamento para o número desse intervalo e armazenado em uma variável. O array de mensagem decodificada recebe esse número e transforma na letra equivalente da tabela ASCII codificada:

    else if (charCodeNum >= 97 && charCodeNum <= 122) { letterDeciphered = (charCodeNum -122 - lag) % 26 + 122; decipheredMessage.push(String.fromCharCode(letterDeciphered));

    4- Se o número for equivalente ao espaço na tabela ASCII (35), o array de mensagem codificada recebe a posição 32 convertida para espaço:

    else if (charCodeNum === 35){ letterDeciphered = 32; decipheredMessage.push(String.fromCharCode(letterDeciphered)); };

    5- Quando a função termina de percorrer as strings da mensagem o processo se encerra e os novos caracteres decodificados estão armazenados no array ‘decipheredMessage’;

    6- Nesse momento é retornado a página HTML a mensagem decodificada com a utilização da função Array.prototype.join() para unir os caracteres de forma contínua:

    return document.getElementById('messageDeciphered').innerHTML = decipheredMessage.join('');

Fim do processo

Fluxograma

cifracesar_laboratoria's People

Contributors

geobueno avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.