DESAFIO, TESTE DE CRIPTOGRAFIA!!!

[txt-size=4] Já andei observando alguns tópicos abertos por alguns usuários, [txt-color=#0000ff]sobre hacker, quebra de senhas, e criptografia[/txt-color], tive a idéia de construir um código simples de criptografia, para nos ajudar a testar / aprender mais sobre o assunto. Gostaria porém de deixar bem claro, que o objetivo deste tópico não é taxar nÃveis de usuários como novato, experiente, guru e etc, [txt-color=#ff0000]todos nós estamos aqui para aprender mais e mais[/txt-color], acredito que isso será de grande proveito para nossa comunidade, não vou tratar a PRINCà ÂPIO de código de criptografia de ‘Terceiros’, vamos aqui construir o nosso próprio, seja para fins de conhecimento e ou aprimoramento das técnicas de programação.[/txt-size]
[txt-color=#ff0000][txt-size=3]O desafio é o seguinte tentar DESCOBRIR como foi feito este código de criptografia!!!!![/txt-size][/txt-color]
é um verdadeiro desafio, quando alguém descobrir, eu posto o código, pra gente aprimorar mais é mais...
'Texto normal
stexto = [txt-color=#0000ff]'Qual é o Código Criptografia GL05'[/txt-color]
'depois da criptografia, ficaria assim
stexto = [txt-color=#ff0000]'72NI"ckhctiqvrktE"qikfõE"q"à «"ncwS'[/txt-color]
O desafio é: "[txt-size=3]Qual (como) o código que usei para fazer este criptografia"?[/txt-size]
Participem....
[S25]
[txt-color=#00ff00] * Tópico Destacado por LCSD [/txt-color]
Interessante o tõpico vai haver inumeras respostas!
Parabens GERMANIR!
Parabens GERMANIR!
LEGALL! BOA INICIATIVA!
QUERO PARTICIPAR TAMBéM APESAR DE SER PRATICAMENTE
LEIGO... ACHO QUE NUNCA CONSEGUIRIA SABER O CODIGO
MAS GOSTEI... VOU PELOMENOS ACOMPANHAR
PAZ PRA TODOS..
FUI
QUERO PARTICIPAR TAMBéM APESAR DE SER PRATICAMENTE
LEIGO... ACHO QUE NUNCA CONSEGUIRIA SABER O CODIGO
MAS GOSTEI... VOU PELOMENOS ACOMPANHAR
PAZ PRA TODOS..
FUI
Se vc estiver pensando em fazermos um programa q faz criptografia, tà ' nessa!
Sinto Muito mas essa é muito Facil
ta aà a resolução
ta aà a resolução
TextoCripto = StrReverse(TextoCripto)
Dim I As Integer
For I = 1 To Len(TextoCripto)
TxtTexto = TxtTexto & Chr(Asc(Mid(TextoCripto, I, 1)) - 2)
Next I
Essa vc matou rapido Clayton
foi muito facil , pois é o mesmo numero de letras o texto criptografado e o nao cripto....
dai entao usando um pouco da logica é somente substituido as letras e suas ordens
nesse caso ele apenas du um reverse se ele estive embaralhado mais seria mais dificil
dai entao usando um pouco da logica é somente substituido as letras e suas ordens
nesse caso ele apenas du um reverse se ele estive embaralhado mais seria mais dificil
Parabéns ao Clayton por ter decriptado o código e ao GERMANIR
pelo tópico.
No embalo, e com a licensa do colega GERMANIR alguém quebra essa ?
ANTES:
-> Vejam o Extravagante Salto da Raposa Sobre o Cachorro que dorme Feliz
DEPOIS:
-> pKPGS ; yD@>GBGMG:@K mGR@; JG lG<;?G m;H>K ; wGIN;>>; =AK J;>SK zKROF
vale uma dica : é uma variante de um algoritmo conhecido
Abs
pelo tópico.
No embalo, e com a licensa do colega GERMANIR alguém quebra essa ?
ANTES:
-> Vejam o Extravagante Salto da Raposa Sobre o Cachorro que dorme Feliz
DEPOIS:
-> pKPGS ; yD@>GBGMG:@K mGR@; JG lG<;?G m;H>K ; wGIN;>>; =AK J;>SK zKROF
vale uma dica : é uma variante de um algoritmo conhecido
Abs
pKPGS
K = e
G = a
; = separador de palavras
> = r
na verdade a substituição direta de letras torna o trabalho de decifrar a mensagem mais simples...
se vc criar um aplicativo com um repositório de palavras, pegar uma frase deste tipo e começar a substituir cada sÃmbolo por outro até que uma porcentagem das palavras estejam presente no repositório, em algumas horas ou dias, qualquer mensagem é quebrada...
aos interessados por este tipo de assunto - sugiro dar uma olhada em chave pública e privada...
algoritmos de criptografia baseados em chaves são muito mais seguros, uma vez que não é uma substituição direta de letras... o texto original sofre alterações em função de uma palavra...
um exemplo simples...
pega um texto: "O VBMania é o melhor site do Brasil!"
você entra com sua chave: "Alterando"
um algoritmo então pega a primeira letra (valor asc) e soma com a primeira letra da palavra entrada (asc), a segunda letra subtrai com a segunda letra digitada, a terceira soma, a quarta subtrai - e assim por diante... (passando de 255 ou 0, volta para o extremo > -1 = 255 e 256 = 0) - cada soma ou subtração gera um número de 0 a 255 que é novamente convertido para caracter...
no final, a palavra sofreu alterações em função de uma chave, e sem conhecimento da chave, é bem complicado dizer o que vai dar...
note que as letras não sofrem as mesmas alterações... neste caso, a letra 'o' tem 3 valores diferentes, o mesmo vale para todas as outras...
este é um exemplo bem simples...
K = e
G = a
; = separador de palavras
> = r
na verdade a substituição direta de letras torna o trabalho de decifrar a mensagem mais simples...
se vc criar um aplicativo com um repositório de palavras, pegar uma frase deste tipo e começar a substituir cada sÃmbolo por outro até que uma porcentagem das palavras estejam presente no repositório, em algumas horas ou dias, qualquer mensagem é quebrada...
aos interessados por este tipo de assunto - sugiro dar uma olhada em chave pública e privada...
algoritmos de criptografia baseados em chaves são muito mais seguros, uma vez que não é uma substituição direta de letras... o texto original sofre alterações em função de uma palavra...
um exemplo simples...
pega um texto: "O VBMania é o melhor site do Brasil!"
você entra com sua chave: "Alterando"
um algoritmo então pega a primeira letra (valor asc) e soma com a primeira letra da palavra entrada (asc), a segunda letra subtrai com a segunda letra digitada, a terceira soma, a quarta subtrai - e assim por diante... (passando de 255 ou 0, volta para o extremo > -1 = 255 e 256 = 0) - cada soma ou subtração gera um número de 0 a 255 que é novamente convertido para caracter...
no final, a palavra sofreu alterações em função de uma chave, e sem conhecimento da chave, é bem complicado dizer o que vai dar...
note que as letras não sofrem as mesmas alterações... neste caso, a letra 'o' tem 3 valores diferentes, o mesmo vale para todas as outras...
este é um exemplo bem simples...
só um pequeno exemplo de como se faz isso - estou colocando o código em C# pq não tenho vb para testar - mas vendo o código a lógica é simples...
são 4 textboxes e um botão...
o primeiro textbox tem o texto original
o segundo a chave
o terceiro o resultado criptografado
o quarto, a operação inversa da criptografia - voltando ao texto original
são 4 textboxes e um botão...
o primeiro textbox tem o texto original
o segundo a chave
o terceiro o resultado criptografado
o quarto, a operação inversa da criptografia - voltando ao texto original
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox4;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.textBox3 = new System.Windows.Forms.TextBox();
this.textBox4 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 16);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(240, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1";
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(8, 48);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(112, 20);
this.textBox2.TabIndex = 1;
this.textBox2.Text = "textBox2";
//
// button1
//
this.button1.Location = new System.Drawing.Point(144, 48);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(104, 24);
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(8, 80);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(240, 20);
this.textBox3.TabIndex = 3;
this.textBox3.Text = "textBox3";
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(8, 104);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(240, 20);
this.textBox4.TabIndex = 4;
this.textBox4.Text = "textBox4";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(264, 133);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.textBox4,
this.textBox3,
this.button1,
this.textBox2,
this.textBox1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
string textoOriginal = textBox1.Text;
string chave = textBox2.Text;
textBox3.Text = Criptografar(textoOriginal, chave);
textBox4.Text = Decodificar(textBox3.Text,chave);
}
private string Criptografar(string textoOriginal, string chave)
{
int auxiliar;
string resultado = "";
int j = 0;
for (int i=0; i < textoOriginal.Length; i++)
{
auxiliar = Convert.ToByte(chave[j]) + Convert.ToByte(textoOriginal[i]);
if (auxiliar > 255)
{
auxiliar = auxiliar - 255;
}
resultado += Convert.ToChar(auxiliar);
j++;
if (j >= chave.Length)
j = 0;
}
return resultado;
}
private string Decodificar(string textoOriginal, string chave)
{
int auxiliar;
string resultado = "";
int j = 0;
for (int i=0; i < textoOriginal.Length; i++)
{
auxiliar = Convert.ToByte(textoOriginal[i]) - Convert.ToByte(chave[j]);
if (auxiliar < 0)
{
auxiliar = auxiliar + 255;
}
resultado += Convert.ToChar(auxiliar);
j++;
if (j >= chave.Length)
j = 0;
}
return resultado;
}
}
}
Uma pequena questão:
Usam a criptografia para quê?
(Para proteger vossos aplicativos ou codificar mensagens)
[S95]
Usam a criptografia para quê?
(Para proteger vossos aplicativos ou codificar mensagens)
[S95]
Tópico encerrado , respostas não são mais permitidas