Mensagens criptografadas

Publicado por Buckminster em 08/01/2023

[ Hits: 1.996 ]

 


Mensagens criptografadas



Segue arquivo para criptografar mensagens entre troca de e-mails (ou outro meio qualquer).

Copie esse código e salve com a extensão .html (Codigo_encriptacao.html ou somente mude a extensão), mande esse arquivo para a pessoa que irá trocar mensagens com você, mande também a senha que será usada entre vocês (a cada e-mail aconselho ser uma senha nova), lembre-se que essa senha é "case sensitive", ou seja, existe diferença entre maiúscula e minúscula, portanto Vol, vol, vOl e VOL são senhas diferentes.

Que eu saiba nunca foi quebrado, mesmo interceptando o e-mail e sabendo a senha que será mandada no e-mail, pois o arquivo funciona no cliente (Javascript).

KISS.

Done.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>ENIGMA XOR MACHINE</title>
        <style>
            .contover{
                width: 50%;
                position:relative;
                margin-left:auto;
                margin-right:auto;
                margin-top:10px;
            }
            .pcarreira {
               text-indent: 50px;
               text-align: justify;
            }
        </style>
        <script>
            function encrypt(str, pwd) {
              if(pwd === null || pwd.length <= 0) {
                alert("Por favor entre com a senha para encriptar a mensagem.");
                return null;
              }
              var prand = "";
              for(var i=0; i<pwd.length; i++) {
                prand += pwd.charCodeAt(i).toString();
              }
              var sPos = Math.floor(prand.length / 5);
              var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));
              var incr = Math.ceil(pwd.length / 2);
              var modu = Math.pow(2, 31) - 1;
              if(mult < 2) {
                alert("Algoritmo não pode encontrar um hash compatível. Por favor escolha outra senha. 
Consideracoes possíveis escolha uma senha mais difícil ou maior.");
                return null;
              }
              var salt = Math.round(Math.random() * 1000000000) % 100000000;
              prand += salt;
              while(prand.length > 10) {
                prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
              }
              prand = (mult * prand + incr) % modu;
              var enc_chr = "";
              var enc_str = "";
              for(var i=0; i<str.length; i++) {
                enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255));
                if(enc_chr < 16) {
                  enc_str += "0" + enc_chr.toString(16);
                } else enc_str += enc_chr.toString(16);
                prand = (mult * prand + incr) % modu;
              }
              salt = salt.toString(16);
              while(salt.length < 8)salt = "0" + salt;
              enc_str += salt;
              return enc_str;
            }

            function decrypt(str, pwd) {
              if(str === null || str.length < 8) {
                alert("Não foi possível desencriptar pois a mensagem e muito pequena os cálculos retornam um numero negativo.");
                return;
              }
              if(pwd === null || pwd.length <= 0) {
                alert("Por favor coloque a senha para desencriptar a mensagem.");
                return;
              }
              var prand = "";
              for(var i=0; i<pwd.length; i++) {
                prand += pwd.charCodeAt(i).toString();
              }
              var sPos = Math.floor(prand.length / 5);
              var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));
              var incr = Math.round(pwd.length / 2);
              var modu = Math.pow(2, 31) - 1;
              var salt = parseInt(str.substring(str.length - 8, str.length), 16);
              str = str.substring(0, str.length - 8);
              prand += salt;
              while(prand.length > 10) {
                prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
              }
              prand = (mult * prand + incr) % modu;
              var enc_chr = "";
              var enc_str = "";
              for(var i=0; i<str.length; i+=2) {
                enc_chr = parseInt(parseInt(str.substring(i, i+2), 16) ^ Math.floor((prand / modu) * 255));
                enc_str += String.fromCharCode(enc_chr);
                prand = (mult * prand + incr) % modu;
              }
              return enc_str;
            }
            //  End -->
        </script>
    </head>
    <body>
        <form name="box">
            <center>
            <div class="contover">
                <p class="pcarreira">Toda mensagem para ser criptografada deve ser colocada no primeiro campo, digite uma senha no campo e clique Encrypt, a mensagem será encriptada no segundo campo, copie e cole na página desejada.</p>
                <p class="pcarreira">Para desencriptar coloque a mensagem recebida no segundo campo e digite a senha recebida, clique Decrypt e no campo acima aparecerá a mensagem enviada. Caso esteja ilegível, repita o processo prestando atenção na senha.</p>
            </div>
              <table cellpadding=0 cellspacing=0 border=0>
                <tr>
                    <td colspan=3>
                        <textarea cols=40 rows=5 wrap=virtual name=ipt placeholder="Coloque sua mensagem aqui"></textarea>
                    </td>
                </tr>
                <tr height=50>
                    <td valign="top">
                        <input type="button" onClick="document.box.opt.value= encrypt(document.box.ipt.value, document.box.pwd.value);" value="Encrypt">
                    </td>
                    <td align="center" valign="center">
					<label>Senha</label><br>
                        <input type="password" name="pwd" value="">
                    </td>
                    <td align="right" valign="bottom" style="padding-bottom:4px;">
                        <input type="button" onClick="document.box.ipt.value= decrypt(document.box.opt.value, document.box.pwd.value);" value="Decrypt">
                    </td>
                </tr>
                <tr>
                    <td colspan=3>
                        <textarea cols=40 rows=5 wrap=virtual name=opt></textarea>
                    </td>
                </tr>
              </table>
                <input type="reset" value="Limpar">
            </center>
        </form>
    </body>
</html>

Outras dicas deste autor

Usar o WoeUSB-ng no Debian para criar um pendrive bootável

Instalar Java e Netbeans no Slackware 15

Instalar Conky no Slackware 15

Resolvendo o problema de acentuação em Português no VIM

Instalar MySQL no Debian 12

Leitura recomendada

JavaScript - verificar se todos os itens de um array são pares ou ímpares

Can I use - Checar compatibilidade de comandos HTML5, CSS, JavaScript e outros

Javascript - pegar um elemento aleatório de uma lista

Direcionando o browser para outra URL

Aprendendo HTML

  

Comentários
[1] Comentário enviado por removido em 08/01/2023 - 09:41h

Aqui deu esses erros no console:

Uncaught SyntaxError: Invalid or unexpected token (at index.html:36:23)
Uncaught ReferenceError: encrypt is not defined
at HTMLInputElement.onclick (index.html:112:166)

Print:
https://imgur.com/a/NnrmHhc

[2] Comentário enviado por Buckminster em 09/01/2023 - 19:04h


[1] Comentário enviado por ru4n em 08/01/2023 - 09:41h

Aqui deu esses erros no console:

Uncaught SyntaxError: Invalid or unexpected token (at index.html:36:23)
Uncaught ReferenceError: encrypt is not defined
at HTMLInputElement.onclick (index.html:112:166)

Print:
https://imgur.com/a/NnrmHhc

Testei aqui no Chrome, no Firefox e no Edge e funcionou sem erro nenhum.
Você seguiu o procedimento?
O erro Uncaught SyntaxError: Invalid or unexpected token é erro de sintaxe na linha 36 aí.
O outro erro é erro de referência na linha 112 aí.
Talvez no copiar o código esqueceu algumas aspas, etc.

[3] Comentário enviado por removido em 09/01/2023 - 20:13h

Buckminster,

logo quando postei a mensagem, vi o que rolou aqui: era o formatador padrão do meu vscode que estava quebrando a linha 36, o alert() quebrava em 2 linhas:
alert("Algoritmo não pode encontrar um hash compatível. Por favor escolha outra senha.
Consideracoes possíveis escolha uma senha mais difícil ou maior.");

Arrumei e funcionou normalmente.

[4] Comentário enviado por maurixnovatrento em 14/01/2023 - 15:07h


Bacana a dica.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts