Ir para conteúdo

POWERED BY:

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 violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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