Ir para conteúdo
Fórum Script Brasil
  • 0

Encriptacao


Guest Guest

Pergunta

class Crypt_RC4 {

    /**
    * Real programmers...
    * @var array
    */
    var $s= array();
    /**
    * Real programmers...
    * @var array
    */
    var $i= 0;
    /**
    * Real programmers...
    * @var array
    */
    var $j= 0;

    /**
    * Key holder
    * @var string
    */
    var $_key;

    /**
    * Constructor
    * Pass encryption key to key()
    *
    * @see    key() 
    * @param  string key    - Key which will be used for encryption
    * @return void
    * @access public
    */
    function Crypt_RC4($key = null) {
        if ($key != null) {
            $this->setKey($key);
        }
    }

    function setKey($key) {
        if (strlen($key) > 0)
            $this->_key = $key;
    }

    /**
    * Assign encryption key to class
    *
    * @param  string key	- Key which will be used for encryption
    * @return void
    * @access public    
    */
    function key(&$key) {
        $len= strlen($key);
        for ($this->i = 0; $this->i < 256; $this->i++) {
            $this->s[$this->i] = $this->i;
        }

        $this->j = 0;
        for ($this->i = 0; $this->i < 256; $this->i++) {
            $this->j = ($this->j + $this->s[$this->i] + ord($key[$this->i % $len])) % 256;
            $t = $this->s[$this->i];
            $this->s[$this->i] = $this->s[$this->j];
            $this->s[$this->j] = $t;
        }
        $this->i = $this->j = 0;
    }

    /**
    * Encrypt function
    *
    * @param  string paramstr  - string that will encrypted
    * @return void
    * @access public    
    */
    function crypt(&$paramstr) {

        //Init key for every call, Bugfix 22316
        $this->key($this->_key);

        $len= strlen($paramstr);
        for ($c= 0; $c < $len; $c++) {
            $this->i = ($this->i + 1) % 256;
            $this->j = ($this->j + $this->s[$this->i]) % 256;
            $t = $this->s[$this->i];
            $this->s[$this->i] = $this->s[$this->j];
            $this->s[$this->j] = $t;

            $t = ($this->s[$this->i] + $this->s[$this->j]) % 256;

            $paramstr[$c] = chr(ord($paramstr[$c]) ^ $this->s[$t]);
        }
    }

    /**
    * Decrypt function
    *
    * @param  string paramstr  - string that will decrypted
    * @return void
    * @access public    
    */
    function decrypt(&$paramstr) {
        //Decrypt is exactly the same as encrypting the string. Reuse (en)crypt code
        $this->crypt($paramstr);
    }


}	//end of RC4 class

alguém me passa a logica da rotina ae?

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Ele pega uma string e encripta de uma forma personalizada!

Isso geralmente é quase tão inseguro quanto os dados não criptografados, se não precisar desincript-los depois, use as funções md5() ou sha1(), mas se você precisar, verifique se a biblioteca mcrypt está ativada no seu servidor e use as funções dela:

Exemplo usando a função TripleDes:

$key="Sterling Hughes";
$string="Super Secretiva, Super Classified Information";

$encrypt_data=mcrypt_ecb(MCRYPT_TripleDES,$key,$string,MCRYPT_ENCRYPT);
$decrypt_data=mcrypt_ecb(MCRYPT_TripleDES,$key,$string,MCRYPT_DECRYPT);

Fonte: PHP - Guia do desenvolvedor - Sterling Hughes/Andrei Zmiesvski - Editora Berkeley

Note que para desencriptar uma strig, $key deve ser igual ao da encriptação, caso contrário, não será possivel desincriptar...

um abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Se foi você mesmo que criou o script, melhora a segurança, se você pegou o código pronto qualquer um que pegar pode desencriptar usando a mesmo função. É extremamente recomendado usar as funções internas do php, é bem mais seguro do q a personalizada, pode acreditar. E além disso, é bem mais fácil de usar

Link para o comentário
Compartilhar em outros sites

  • 0

na verdade eu gostaria de que vocês me explicassem a logica disso..

eu peguei esse script pronto, mas agora vo utilizar outra linguagem e gostaria de continuar encriptando as senhas dessa mesma maneira, vocês me ajudam?

vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Isso não tem uma lógica, ele pega a string e embaralha os caracteres

Acho que tem uma lógica, sim... por mais complexa que seja. Se não, não seria possível descriptografar... certo??

Mais olha lá na linha do decrypt:

function decrypt(&$paramstr) {
       [B]//Decrypt is exactly the same as encrypting the string. Reuse (en)crypt code[/B]
       $this->crypt($paramstr);
   }

é claro que isso tem uma lógica, mas acho q ninguém aqui vai querer ficar se matando pra decifrar.

Link para o comentário
Compartilhar em outros sites

  • 0

bicho...

não programo em php não, programo em outra linguagem..

porem, precisava entender a logica pra tentar fazer o mesmo na linguagem na qual eu programo, alguém me ajuda?

Cara, se você programa em outra linguagem, a lógica de programação você já tem... inclusive não deve ter problemas pra entender estruturas "if", "while", "for", etc..

Então, só faltaria você enteder as funções específicas do PHP que estão sendo usadas... você poderia consultar a documentação dessas funções no http://br.php.net, que estão muito bem explicadas:

strlen(): retorna o número de caracteres de uma string

chr(): returna o código ASCII de um caractere

ord(): retorna o caractere a partir de um código ASCII

Agora é só estudar o script...

Se tiver dúvidas, posta aí!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...