none
Dúvida sobre RSA RRS feed

  • Pergunta

  • Boa noite pessoal,

    Gostaria de tirar algumas duvidas na minha utilização do RSA.

    Por favor, eu to com dificuldades de entender e setar os parametros corretos,entao gostaria de saber se desde modo abaixo os metodos de encriptação de descriptação estao corretos, e se os parametros sao suficientes.


    Preciso fazer alguma coisa a mais ?

    Dúvidas:

    Em alguns exemplos vi a pessoa da um reverse no array cifrado, pq isso?

    E em alguns casos fazer a conversao para string base64 : Convert.ToBase64String( encryptedBytes ), pq ?

    Como faço para setar um sizeKey menor que o padrao 1024 bits ?

    tks
    public
     class
     Criptografia 
    {

    public Chave novaChave()
    {
    CspParameters CspParametros = new CspParameters();
    CspParametros.Flags = CspProviderFlags.UseMachineKeyStore;
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(CspParametros);
    Chave Key = new Estrutura.Chave();
    Key.PublicKey = RSA.ToXmlString(false );
    Key.PrivateKey = RSA.ToXmlString(true );
    return Key;
    }

    public string Encrypt(string Text, string Key)
    {
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(384);
    byte [] Byte_Encrypt;
    string string_Encrypt;

    RSA.FromXmlString(Key);

    Byte_Encrypt = RSA.Encrypt(Encoding.ASCII.GetBytes(Text), false );
    string_Encrypt = Encoding.ASCII.GetString(Byte_Encrypt);

    return string_Encrypt;

    }

    public string Decrypt(string Text, string Key)
    {
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(384);
    byte [] Byte_Decrypt;
    string string_Decrypt;

    RSA.FromXmlString(Key);

    Byte_Decrypt = RSA.Decrypt(Encoding.ASCII.GetBytes(Text), false );
    string_Decrypt = Encoding.ASCII.GetString(Byte_Decrypt);

    return string_Decrypt;
    }
    }


    // classe guarda as chaves
    public class Chave
    {

    private string strPrivateKey = null ;
    private string strPublicKey = null ;

    public Chave(){}


    public string PublicKey
    {
    get { return strPublicKey; }
    set { strPublicKey = value; }
    }

    public string PrivateKey
    {
    get { return strPrivateKey; }
    set { strPrivateKey = value; }
    }

    }
    sábado, 14 de novembro de 2009 20:17

Respostas

  • Prezado,

    Acredito que o reverse no array cifrado seja só para dificultar mais a decriptação...

    Já ao chamar o ToBase64String, é só para transformar os bytes encriptados em uma string, se vc quiser guardar o resultado da criptografia em string, ao invés de byte array...

    Quanto ao tamanho da chave, um dos construtores do RSCryptoServiceProvider recebe um int, que é justamente o tamanho da chave...
    André Alves de Lima - http://andrealveslima.spaces.live.com
    sábado, 28 de novembro de 2009 17:29
    Moderador