Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

karina pereira refacho

gerador de resultados hash 512

Recommended Posts

ola pessoal não entendo muito sobre php estou tentando juntar 2 script em php mas não tenho a minima ideia por onde começar se alguem puder me dar uma luz eu agradeço, vamos tenho esse script abaixo onde ele me gera todas as hash de 1 a 3000 

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 3000) as $number) {
    echo hash('sha512', $number).'<br>'; 
} fim do script


eu preciso fazer com que ele junte com esse segundo script aqui abaixo


$seed = "HASH SERA INSERIDA AQUI-123456-1";
do {
     $seed = sha1($seed);
     $lucky = hexdec(substr($seed,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;


echo $luckyNumber ;

FIM DO SCRIPT

 

se voce copiar esse segundo script e rodar no servidor vai me gerar esse resultado 18.65

eu preciso fazer com que ele gere todas as 3000 hash com o resultado na frente de cada hash exemplo abaixo

c3fc4fd56f773728a0421980c587dce13ea89992c5005f245e971a9a78966f590611c1eb0c89e3de9515ee917297c980fa4544f2b211f9e4a9d9f88b48ca5e62   3.48

e0e725f004f61cdae9017eb715a22d2bf60e9db2da81ced94da8c49b01c802600cfebfb5b5d04430824918b5f70a773f980b42192ec0e054bd655d7d084a6a69  15.68

 

 

desde ja agradeço a ajuda e atenção de todos

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente boa madrugada!

 

Gerar 3.000 linhas de resultado e exibir numa só página sem paginação seria exaustivo pro leitor, quem quer que ele seja, além de bastante desorganizado. Sem contar que geraria um "peso" grande na renderização da página e facilmente travaria o navegador num PC mais modesto.

 

Sabendo disso, você precisa entender como e o que são as variáveis, precisa aprender sobre a estruturação da linguagem. Vamos começar. Vou explicar linha por linha do seu código.

 

foreach(){} é um loop, um laço de repetição específico para trabalhar com arrays (sabe o que são arrays? se não, pergunte). for = para, each = cada. Leia o foreach assim: para cada($índice_do_meu_array como $string_que_armazenará_o_valor_do_índice_atual){processe este código}. Existem muitos laços de repetição, estude-os.

 

echo hash('sha512', $number).'<br>'; Leia: imprima na tela este número criptografado em sha512 e gere uma quebra de linha HTML ao final.

 

$seed é uma variável onde você deve armazenar o valor gerado pelo código acima. Pelo que entendi do script você deveria escolher um hash exclusivo e inseri-lo neste campo. Para definir um valor a uma variável, comumente utiliza-se o seguinte método: $variavel = "valor"; ou $variavel = false; ou $variavel = true; ou $variavel = 123456789; etc.

 

do{}while() é outro laço de repetição. Leia: faça{este código}enquanto(esta condição for verdadeira); Esse trecho do seu cógido gera um número aleatório e o insere na variável $lucky. A função hexdec($variavel) retorna o decimal equivalente do número hexadecimal enviado via $variavel e converte uma string hexadecimal para um número decimal, ignorando qualquer caracter não hexadecimal que encontrar em $variavel.

 

$luckyNumber = ($lucky % 10000) / 100; essa é uma operação matemática. Ela resulta no módulo (resto da divisão) de $lucky por 10.000 e divide o resultado por 100. Por exemplo, 10 % 8 é o mesmo que 10 /8 = 1 com resto 2, portanto 10 % 8 retornaria 2.

 

if ($luckyNumber < 0) $luckyNumber = -$luckyNumber; Esse trecho diz o seguinte: se $luckyNumber for menor que 0, então $luckyNumber é igual a -$luckyNumber (o mesmo número com o indicador de negativo).

 

echo $luckyNumber; Leia: imprima minha variável chamada $luckyNumber.

 

Você poe exibir o resultado do jeito que deseja concatenando (juntando) as variáveis que contenham o hash e o resultado. No entanto no seu código, o hash sha512 não está sendo armazenado em local algum. Você precisa armazená--lo ou envia-lo para a página que gerará o $luckyNumber. Você pode fazer isso de duas formas: randomizando completamente o código, deixando de exibir os hashes na tela e sim armazenando um aleatório numa variável (substitua o echo por $variavel = ), mas não bastaria simplesmente fazer isso, pois, faça o teste, o resultado seria SEMPRE um hash do número 3000. Neste caso, recomendo que utilize a função rand(1, 3000) para gerar um número aleatório e então encripte-o com hash("sha512", $numeroAleatorio). Lembre de armazenar o valor do rand() numa variável para encriptá-la depois. Dessa forma já resolveria sua questão imprimindo algo similar a $luckyNumber.' '.$numeroAleatorio; Para concatenar strings utilize o PONTO . entre elas. Você pode concatenar uma variável a uma string explícita também, como fiz no exemplo acima em .' '., que é uma string com um espaço como sendo o seu valor.

 

Outra opção seria gerar os hashes, como é feito atualmente, numa página e utilizar um formulário HTML para enviá-lo à página que gera o $luckyNumber. Neste caso, capture o valor do seu <input> que terá a hash escolhida pelo usuário da página utilizando as variáveis  reservadas $_GET["nome do campo no formulário"] ou $_POST["nome do campo no formulário"], a depender o ditpo de postagem realizada através deste formulário. Após capturado o valor, adicione-o à variável $seed e o resto ocorrerá normalmente, gerando seu $luckyNumber.

 

Se ainda tiver dúvidas, pergunte.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo muito obrigada pela dica, vou estudar os codigos aqui e ver se consigo vou tentar fazer a segunda opção que voce me passou, utilizar um formulário HTML e  $_GET["nome do campo no formulário"]

mais uma vez muito obrigada tenha uma otima semana

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 08/08/2017 at 10:30, karina pereira refacho disse:

amigo muito obrigada pela dica, vou estudar os codigos aqui e ver se consigo vou tentar fazer a segunda opção que voce me passou, utilizar um formulário HTML e  $_GET["nome do campo no formulário"]

mais uma vez muito obrigada tenha uma otima semana

 

amigo se voce puder me dar uma luz não consegui fazer estou meio perdida pois não entendo nada sobre php desde ja muito obrigada pela atenção tenha uma otima semana

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, karina pereira refacho disse:

 

amigo se voce puder me dar uma luz não consegui fazer estou meio perdida pois não entendo nada sobre php desde ja muito obrigada pela atenção tenha uma otima semana

em vez de gerar 3000 hash poderia ser menor exemplo 100 hash so que queria facilitar o resultado par não ficar adicionado uma por uma por exemplo o script deveria mostrar as 100 hash com o resultado luckyNumber na frente exemplo abaixo de hash + resultado no final

 

4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a = 13.7

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola acho que estou chegando lá consegui fazer com que ele gere a hash com o resultado so que ele so esta gerando uma hash com um resultado na parte foreach (range(1, 100) as $number) esta setado para gerar 100 hash com 100 resultados o que sera que fiz de errado ?

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1'; 
} 

do {
     $variavel = sha1($variavel);
     $lucky = hexdec(substr($variavel,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;

echo hash('sha512', $number).' = ';
echo $luckyNumber .'<br>';

no script acima se testar no http://phptester.net/ so me gera uma hash + o resultado no final igual abaixo

643c30f73a3017050b287794fc8c5bb9ab06b9ce38a1fc58df402a8b66ff58f69bf0a606ae17585352a0306f0e9752de8c5c064aed7003f52808b43ff992a603 = 35.46

 

nesse caso preciso que gere 100 hash com 100 resultados no final

se possivel me de uma luz por favor obrigada pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, karina pereira refacho disse:

ola acho que estou chegando lá consegui fazer com que ele gere a hash com o resultado so que ele so esta gerando uma hash com um resultado na parte foreach (range(1, 100) as $number) esta setado para gerar 100 hash com 100 resultados o que sera que fiz de errado ?


<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1'; 
} 

do {
     $variavel = sha1($variavel);
     $lucky = hexdec(substr($variavel,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;

echo hash('sha512', $number).' = ';
echo $luckyNumber .'<br>';

no script acima se testar no http://phptester.net/ so me gera uma hash + o resultado no final igual abaixo

643c30f73a3017050b287794fc8c5bb9ab06b9ce38a1fc58df402a8b66ff58f69bf0a606ae17585352a0306f0e9752de8c5c064aed7003f52808b43ff992a603 = 35.46

 

nesse caso preciso que gere 100 hash com 100 resultados no final

se possivel me de uma luz por favor obrigada pela atenção

so lembrando que foi mencionado para fazer em número aleatório o problema são as repetiçoes acredito que não ira gerar as hash de 1 a 100 corretamente e sem repetir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde! Desculpa a demora a responder, fiquei sem conexão por conta de um poste que caiu aqui perto de casa.

 

Enfim, vamos la.

 

Se você quer gerar 100 resultados diferentes, poderia resolver facilmente alterando um pouco o seu código atual. Para tanto, bastaria mover parte do seu código e inseri-lo totalmente dentro do seu laço de repetição foreach(), que já é responsável por realizar um mesmo script N vezes, dessa forma:

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
$n=1;
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1';
	do {
		$variavel = sha1($variavel);
		$lucky = hexdec(substr($variavel,0,8));
	} while ($lucky > 4294960000);

	$luckyNumber = ($lucky % 10000) / 100;

	if ($luckyNumber < 0)
		 $luckyNumber = -$luckyNumber;

	echo "Resultado $n<br />\r\n".hash('sha512', $number).' = ';
	echo $luckyNumber .'<hr>';
	$n++;
}

OBS: A variável $n eu coloquei simplesmente pra facilitar sua visualização e pra que você possa perceber com mais facilidade que ele, de fato, gerou os 100 resultados, bem como o trecho "Resultado $n<br />\r\n". do código também é simplesmente para uma melhor visualização. Todos esses trechos de código devem ser removidos quando você for utilizá-lo para seu objetivo final, depois que aprender como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E no caso de gerar um hash aleatório sem repetir nenhum deles nem mesmo uma única vez seria um pouco mais complicado... você teria de armazenar cada resultado num array e depois verificar a existência dele. Caso exista, remove faria com que seu laço de repetição fosse executado uma vez mais além do esperado.

 

Recomendo que você aprenda primeiro a fazer da forma como está agora, simplesmente gerando números aleatórios de 1 a 100 pra só depois passar pra essa outra parte mais complexa, um pouco (mas também não é um bicho de 7 cabeças).

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.