Mensagens criptografadas

Publicado por Buckminster em 08/01/2023

[ Hits: 1.758 ]

 


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

Use o Google PageSpeed Insights para verificar um site

Instalar Conky no Slackware 15

Desligar Windows remotamente pelo Linux

Como resolver os erros 'a start job is running for wait for network to be configured' e 'a start job is running for raise network interfaces'

Configurar Postgresql para conectar com senha criptografada

Leitura recomendada

Tampermonkey - Executando JavaScript em Sites com o Chrome

Chromium e Firefox - Forma prática de abrir links em nova aba

Codificação HEXADECIMAL para HTML

Bloqueando objetos Flash de páginas

Skype Web - Alternativa ao Skype desktop

  

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