Ajuda para criar um sistema de Criptografia

Olá amigos
Quero fazer um sistema simples de criptografia usando o contador …para cada posição [i] Quero fazer usando o Windows Form em C#. Porém o que aprendi até hoje na faculdade, foi tudo no modo console,entou encarando as dificuldades para compreender no modo OO em form .

Minha idéia é colocar um botão de criptografar ao lado da textbox com essa função ou método .E outro button para descriptografar fazendo a mesma sequência ,só que invertendo o contador para descriptografar a mensagem,e também junto com a textbox.

E cada botão mandando o resultado para sua texbox. Se alguém souber algum material bom para estudar isso e puder postar,mande ai…

Realmente,ainda estou terminando o 2º semestre,aprendi somente no modo estruturado.Gostei muito de usar o form ,porém está muito confuso usar ele … Se alguém puder me dar uma ajuda ficarei muito grato.

Meu código base no console é

[code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{

        string texto;
        int i, tam;



        Console.WriteLine("Coloque um texto ");
        texto = Console.ReadLine();

        tam = texto.Length;

         for (i = 0; i <= tam-1; i++)

         {
             Console.Write(Convert.ToChar(texto[i]+4));
         }
        Console.ReadKey();


    }
}

}[code]

É isso mesmo ,ou essa lógica para implementar em for está errada ?

[quote=Guimagal]Olá amigos
Quero fazer um sistema simples de criptografia usando o contador …para cada posição [i] Quero fazer usando o Windows Form em C#. Porém o que aprendi até hoje na faculdade, foi tudo no modo console,entou encarando as dificuldades para compreender no modo OO em form .

Minha idéia é colocar um botão de criptografar ao lado da textbox com essa função ou método .E outro button para descriptografar fazendo a mesma sequência ,só que invertendo o contador para descriptografar a mensagem,e também junto com a textbox.

E cada botão mandando o resultado para sua texbox. Se alguém souber algum material bom para estudar isso e puder postar,mande ai…

Realmente,ainda estou terminando o 2º semestre,aprendi somente no modo estruturado.Gostei muito de usar o form ,porém está muito confuso usar ele … Se alguém puder me dar uma ajuda ficarei muito grato.

Meu código base no console é

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {

            string texto;
            int i, tam;



            Console.WriteLine("Coloque um texto ");
            texto = Console.ReadLine();

            tam = texto.Length;

             for (i = 0; i < texto.Length; i++)

             {
                 Console.Write(Convert.ToChar(texto[i]+4));
             }
            Console.ReadKey();


        }
    }
}

[/quote]

Blz? Eu não to com o VS aqui. Se quiser, posto o que sei em java. Pode ser?
Se não, precisarei de um tempinho pra lembrar como compilo em linha de comando.
Exemplo:
By default, csc compiles console applications. You need to add /target:winexe to compiler options.
fonte:

Não se preocupe. OO é bem mais fácil do que codificação estruturada (tripa escorrida).
O lance do form, é que ele precisa estar dentro de uma thread (não é muito diferente do java), porque para qualquer modificação que ocorrer na tela, necessita que o form e o conteúdo interno dele seja repintado para atualizar o que o usuário visualiza.

A forma como o Form trabalha esconde um laço de repetição. Isso é transparente pra nós.

Quanto a criptografia, isso vc pretende utilizar onde? Se for apenas por fins didáticos acho que é um bom começo, mas se estiver pensando em colocar em produção, eu não recomendaria, pois esse tipo de criptografia que está tentando fazer é muito fácil de ser quebrada.

Se deseja estudar sobre criptografia, eu recomendo procurar por RSA (Baseada em numeros primos) e AES(baseado em curvas elipticas). Atualmente são as melhores formas de criptografia. RSA é uma criptografia assimétrica e AES é uma criptografia simétrica. Estes dois últimos conceitos deverão ser pesquisados por vc.
Agora uma atenção para isso:
Este é um exemplo muito bacana em javascript de criptografia em RSA, mas existe apenas uma pequena falha:


A falha é que a criptografia está em cima de caracteres e não de blocos (conjunto de 2 ou mais um caracteres). Quando se criptografa apenas um caractere de cada vez, pode-se quebrar a criptografia facilmente, pois existem somente 256 caracteres possíveis. Mas se fizer a criptografia por blocos, pode aumentar exponencialmente a dificuldade da quebra da criptografia.

[quote=Luiz Augusto Prado][quote=Guimagal]Olá amigos
Quero fazer um sistema simples de criptografia usando o contador …para cada posição [i] Quero fazer usando o Windows Form em C#. Porém o que aprendi até hoje na faculdade, foi tudo no modo console,entou encarando as dificuldades para compreender no modo OO em form .

Minha idéia é colocar um botão de criptografar ao lado da textbox com essa função ou método .E outro button para descriptografar fazendo a mesma sequência ,só que invertendo o contador para descriptografar a mensagem,e também junto com a textbox.

E cada botão mandando o resultado para sua texbox. Se alguém souber algum material bom para estudar isso e puder postar,mande ai…

Realmente,ainda estou terminando o 2º semestre,aprendi somente no modo estruturado.Gostei muito de usar o form ,porém está muito confuso usar ele … Se alguém puder me dar uma ajuda ficarei muito grato.

Meu código base no console é

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {

            string texto;
            int i, tam;



            Console.WriteLine("Coloque um texto ");
            texto = Console.ReadLine();

            tam = texto.Length;

             for (i = 0; i < texto.Length; i++)

             {
                 Console.Write(Convert.ToChar(texto[i]+4));
             }
            Console.ReadKey();


        }
    }
}

[/quote]

Blz? Eu não to com o VS aqui. Se quiser, posto o que sei em java. Pode ser?
Se não, precisarei de um tempinho pra lembrar como compilo em linha de comando.
Exemplo:
By default, csc compiles console applications. You need to add /target:winexe to compiler options.
fonte:

Não se preocupe. OO é bem mais fácil do que codificação estruturada (tripa escorrida).
O lance do form, é que ele precisa estar dentro de uma thread (não é muito diferente do java), porque para qualquer modificação que ocorrer na tela, necessita que o form e o conteúdo interno dele seja repintado para atualizar o que o usuário visualiza.

A forma como o Form trabalha esconde um laço de repetição. Isso é transparente pra nós.

Quanto a criptografia, isso vc pretende utilizar onde? Se for apenas por fins didáticos acho que é um bom começo, mas se estiver pensando em colocar em produção, eu não recomendaria, pois esse tipo de criptografia que está tentando fazer é muito fácil de ser quebrada.

Se deseja estudar sobre criptografia, eu recomendo procurar por RSA (Baseada em numeros primos) e AES(baseado em curvas elipticas). Atualmente são as melhores formas de criptografia. RSA é uma criptografia assimétrica e AES é uma criptografia simétrica. Estes dois últimos conceitos deverão ser pesquisados por vc.
Agora uma atenção para isso:
Este é um exemplo muito bacana em javascript de criptografia em RSA, mas existe apenas uma pequena falha:


A falha é que a criptografia está em cima de caracteres e não de blocos (conjunto de 2 ou mais um caracteres). Quando se criptografa apenas um caractere de cada vez, pode-se quebrar a criptografia facilmente, pois existem somente 256 caracteres possíveis. Mas se fizer a criptografia por blocos, pode aumentar exponencialmente a dificuldade da quebra da criptografia.
[/quote]

Nossa amigo,fiquei contente pela sua contribuição …

É para fins didáticos

Se tiver em java pode mandar também… De preferência em c#,pois a proposta nossa era fazer nele.Mas se não dê mande em java mesmo .

Preciso aprender urgente OO

Queria fazer um treinamento também,sinto muito a necessidade de aprender… Tem algum material bom ?

O que vc me indica ?

Visto hoje,seria melhor fazer um treinamento em .net ou java? O que abriria mais o meu horizontes de atuação?

Cursos na Caelum e globalcode… O que acha?

Eu não conheço o pessoal da Globalcode, mas recomendo fazer cursos na Caelum, principalmente para abrir seus horizontes.
Só pelo blog deles você nota o pessoal falando de soluções para problemas que a maioria das empresas daqui ainda vão ter (quando se livrarem dos problemas ainda mais básicos).

Um primeiro curso presencial te ajudaria muito nisso. Depois tem plataformas onlines (Alura), blogs, perguntas no fórum, etc.

Amigo o que você me recomenda investir…

Aprendi c# em modo console,próximo ano pego java e mer com banco de dados sql.Mas não quero ficar dependendo só deles ,é melhor eu investir em .net ou java? Um curso presencial legal…

[quote=Guimagal]Preciso aprender urgente OO

Queria fazer um treinamento também,sinto muito a necessidade de aprender… Tem algum material bom ?

O que vc me indica ?

Visto hoje,seria melhor fazer um treinamento em .net ou java? O que abriria mais o meu horizontes de atuação?

Cursos na Caelum e globalcode… O que acha?[/quote]

Rapaz, de programação eu me lembro de ter feito apenas um. JSP na X25. Na época foi interessante, pois me atualizei nas ferramentas de Java. na época eu usava o JCreator e linha de comando. Era o que os professores da faculdade mais utilizavam.
Cursos são bons se tiver começando agora. Se não, só vão te dar algumas dicas, atualizações e contatos. O resto, vc quem deve correr atrás.
A única forma de se manter na crista da onda é vc arrumar um emprego e seguir seus colegas mais experientes. Antes de tentar um curso, eu tentaria estudar pelo que se encontra na internet. Não gaste dinheiro com quais quer cursinhos. Eles vão fazer vc perder tempo com particularidades da linguagem e frameworks. Algo que é trivial e que vc realmente só aprender na marra, trabalhando e com o tempo dentro de uma empresa. Vai por mim, qualquer outra coisa é enganação e eu já esfreguei estas provas pra muitos doutores Brasil a fora. O que prova que tem muita gente ai fora que só quer vender.

Existe muito material didático bom na internet. Muito mesmo. Por exemplo este sobre os conceitos matemáticos do RSA:
http://www.darlen.eti.br/publicacoes/introrsa.html

Existe uma infinidade de conceitos matemáticos por trás da criptografia com RSA.
Duvido que os cursinhos de TI se aprofundem tanto, ao ponto de detalharem em provas o porque o RSA funciona. Eles, na maioria dos casos, vão na fé de que o algoritmo funciona. Se quiser saber como funciona realmente, vai precisar estudar matemática. Ai, isso foge ao aprendizado de programação e, mais precisamente, de POO.

Se quer aprender OO, este material da Caelum é bem interessante:

A linguagem… isso depende muito. Basicamente o que se faz em Java, dá pra fazer em C# e vice versa. A diferença é que cada um tem suas chamadas para funções específicas. O portugol, funcionaria para ambas se traduzido corretamente. A maior vantagem do Java e do C# para outras linguagens, na minha concepção, é que elas permitem a utilização de metadados na forma de annotations. Annotations são uma mão na roda. Isso não impede de que possa fazer algo equivalente em C ou C++. Mas as annotations, ou attributs em c#, são uma forma muito elegante de se programar com metadados.


Se está começando agora, eu faria em Java, pois a IDE Eclipse ou Netbeans é gratuita e seus plugins são muito fáceis de instalar. vc não vai querer uma versão de 1 mês do VS.
Quando trabalho com C#, prefiro usar linha de comando só pra não ficar dependente do VS. Só que isso é uma bosta mesmo, pois as classes responsáveis pelo designer e libs dever referenciadas no console. Sem erro. Isso é difícil de lembrar de cabeça. Exige um estudo longo de como se pode fazer isso direito. É por isso que fica quase que impossível programar utilizando form em linha de comando com c#. Vc precisa de uma ide inteligente pra isso. com Java é mais fácil compilar utilizando forms em linha de comando.

dicas: A linguagem que mais teve sucesso foi o Inglês porque ela é simples e fácil de aprender. Não tem muita frescura. Com ela podemos expressar tudo o que quisermos de forma simples e ágil. A mesma noção também deveria ser carregada para a programação. O objetivo da linguagem é expressar. Então, busque simplicidade. Principalmente agora que tá começando e desconfie quando lhe falarem: “não dá pra ter simplicidade em tudo”. Isso é uma verdade para casos MUITO específicos.

Amigo
acho legal sua opinião sobre os treinamentos …

Mais para quem ainda está sem um norte e tal na para começar,fazer uma ia dar um empurraõzinho não acha?

Atualmente vc trabalha com o que?

Sou da grade SP

Jardineiro e estou no 2º sem de SI.

[quote=Guimagal]Amigo
acho legal sua opinião sobre os treinamentos …

Mais para quem ainda está sem um norte e tal na para começar,fazer uma ia dar um empurraõzinho não acha?

Atualmente vc trabalha com o que?

Sou da grande SP

Jardineiro e estou no 2º sem de SI.[/quote]

No momento sou autônomo. Os salários oferecidos no momento não compensam abandonar a serralheria ou consultorias. ver meu site na assinatura. Fiz 4 semestres de ciência da computação. Sempre gostei muito de matemática, programação, eletrônica e mecânica.
To desenvolvendo pouco atualmente porque estou investindo mais em outros campos: Serralheria e fundição de metais. Pra mim a combinação delas é arte e atualmente to trabalhando com mecânica (Fundição).

Algumas coisinhas que cheguei a filmar de eletrônica (parei de postar vídeos):

Sim, o empurrão é bacana. Na faculdade SI a lógica de programação geralmente é ensinada já no primeiro semestre. Vc não vai ver OO no primeiro semestre, acho que isso é matéria do terceiro semestre. lógica de programação e programação estruturada são pré-requisitos.
Na sua faculdade, em que linguagem é dado a disciplina de programação? se tiver opção de escolher o Java… eu faria.

[quote=Luiz Augusto Prado][quote=Guimagal]Amigo
acho legal sua opinião sobre os treinamentos …

Mais para quem ainda está sem um norte e tal na para começar,fazer uma ia dar um empurraõzinho não acha?

Atualmente vc trabalha com o que?

Sou da grande SP

Jardineiro e estou no 2º sem de SI.[/quote]

No momento sou autônomo. Os salários oferecidos no momento não compensam abandonar a serralheria ou consultorias. ver meu site na assinatura. Fiz 4 semestres de ciência da computação. Sempre gostei muito de matemática, programação, eletrônica e mecânica.
To desenvolvendo pouco atualmente porque estou investindo mais em outros campos: Serralheria e fundição de metais. Pra mim a combinação delas é arte e atualmente to trabalhando com mecânica (Fundição).

Algumas coisinhas que cheguei a filmar de eletrônica (parei de postar vídeos):

Sim, o empurrão é bacana. Na faculdade SI a lógica de programação geralmente é ensinada já no primeiro semestre. Vc não vai ver OO no primeiro semestre, acho que isso é matéria do terceiro semestre. lógica de programação e programação estruturada são pré-requisitos.
Na sua faculdade, em que linguagem é dado a disciplina de programação? se tiver opção de escolher o Java… eu faria.

[/quote]

Nossa

que legal Luiz Augusto,parabéns pelo seu trabalho…

Então Luiz,como disse,sou jardineiro,trabalho prestando serviços de jardinagem e paisagismo em condomínio da minha região aqui em SP. Como autônomo também,sempre gostei do meu serviço,sei as liberdades que um autônomo têm kk blog em forma de site kk http://floramagalhaes.blogspot.com.br/ do meu serviço.

Porém,quero mesmo entrar na área . Vou mudar para Ciências da computação nesse final de semestre,meu primeiro ano foi as duas turmas juntos,e irão até o fim.Só algumas matérias que trocam de sala…

No primeiro sem foi html e css,no segundo foi c#,lógica de programação .Agora no 3 e 4 será java nos dois e MER no terceiro e Mysql e sql no quarto …

Pensei em fazer um treinamento java aos sábados na globalcode aqui perto da minha faculdade,um professor só da aula de java lá,também trabalha na globalcode e é muito bom .Muitos recomendam o trabalho deles.
Assista a entrevista dele; http://www.infoq.com/br/interviews/certificacao-java-7

Segundo um outro professor nosso,o treinamento é muito bom,e está saindo no valor de R$ 3,500 completo…

Ou então fazer um treinamento de C# E asp.net com mvc na Caelum ,visto que tenho visto várias vagas em formação .net aqui na região .

Queria mesmo saber,o pq de java,fiz um trabalho de paradigmas de linguagem e detalhei muito sobre a capacidade e mobilidade que o java oferece. Mais realmente,o quanto o realmente Java supera ? Em relação java x .net ,qual seria melhor opção para trabalhar(usar a aplicação) e mercado de trabalho?

Wittgenstein, um dos filósofos que mais gostei de estudar, também era jardineiro:

Volta e meia essa mesma pergunta aparece. Essa é minha opinião:


Talvez eu mude assim que eu tiver tempo para me aprofundar nessa questão mostrada pelo Júlio recentemente:

Nada impede vc de estudar as duas linguagens e plataformas.
O mercado depende de região para região.
Aqui no centro-oeste, existe muito espaço para Delphi. Muito mesmo. Atualmente o pessoal aqui está migrando para C# e Java o que estava em Delphi.

Aqui algumas dicas que tava querendo:
http://pt.wikibooks.org/wiki/Java/Criando_e_executando_o_primeiro_programa

tenta compilar este arquivo com o nome de Main.java

import javax.swing.*;
public class Main
{ 
    private Main()
    {
        // Thread 
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable()
        { 
            public void run()
            {
                JFrame jframe = new JFrame(); 
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                jframe.setVisible(true); 
            }
        }); 
    }

    public static void main(String[] args)
    {
        new Main();
    }
}

Que faculdade é essa? Parece boa.
Só to achando o curso um pouco salgado. 3.500 é muita grana.
Se eu fosse vc pesquisava um pouco mais.

[quote]
Que faculdade é essa? Parece boa. [/quote]

É na UNIP .Você conhece ela?
Vou acompanhar ler esses post e ver o que é melhor para mim .

Aqui eu também soube de uma empresa que migrou recentemente de Delphi para C#.

Vou compilar …

Você aprendeu Java e C# no 2º ano de CC?
Como foi sua curva de aprendizado?

Já ouvi falar, parece boa pelo que vc postou aqui.
É que nas faculdades que conheço, primeiro ensinam o pseudo-codigo.
Somente no segundo semestre que ensinam uma linguagem e vai até o fim do curso nela.
Se ela tá apresentando várias linguagens, acho que ela tá fazendo bem porque tá te preparando para as linguagens mais comuns do mercado.

não, c# eu aprendi em uma empresa onde trabalhei. Eles viram que eu já sabia java e que é parecido com c# e acreditaram que eu poderia aprender rapido o c#. Em uns 2 meses já tava legal. Deu pra aprender com tudo no VS. Não foi medido meu desenvolvimento. O pessoal só falava que eu aprendia rápido.

Isso ai amigo! vc vai conseguir. Tem que perseverar.
No início é um pouco complicado. Com o tempo vc se acostuma.
Compila esse fonte que te mandei em linha de comando. no link que te mandei acima ensina como fazer no console. talvez tenha que setar as variaveis de ambiente.

Depois que vc souber como fazer pelo menos alguma coisinha no console, tenta baixar uma ide.
Eu gosto mais do Netbeans. Só uso eclipse no trabalho por obrigação.
Se escolher netbeans, ai vc ve como trabalhar com swing (forms):


Acho que este tópico fechou.
para as proximas duvidas crie outro post.
Abração e sucesso.