Algoritmo de Euclides estendido em Perl
Publicado por Perfil removido (última atualização em 12/04/2013)
[ Hits: 3.939 ]
Para economizar explicações, relembrando criptografia de chave assimétrica com este artigo: http://www.vivaolinux.com.br/artigo/Criptografia-assimetrica-com-o-RSA?pagina=4 bem na página que mais interessa neste momento.
Parte do problema consiste em:
"Dado dois números inteiros positivos E e N, encontre um terceiro inteiro positivo D de tal modo que E vezes D quando dividido por N dê resto 1."
É a proposta desse código.
#!/usr/bin/perl
=pod
0 1
101 29 3 1 0
29 14 2 -3 1
14 1 14 7 -2
dispensa calculo da segunda coluna
=cut
use warnings;
use strict;
sub gcd_ext {
my @n=(0, shift, shift);
my @d1=(1, 0);
# my @d2=(0, 1);
my @q = (0);
while ($n[-1]!=0) {
push (@n,$n[-2]%$n[-1]);
push (@q,($n[-3]-$n[-1])/$n[-2]);
push (@d1,$d1[-2]-$q[-1]*$d1[-1]);
# push (@d2,$d2[-2]-$q[-1]*$d2[-1]);
}
return ($d1[-2]<0?$n[2]+$d1[-2]:$d1[-2]);
}
my $x = 29;
my $y = 101;
my $z = gcd_ext($x,$y);
print "$x * x = 1 (mod $y)\n";
print "$x . $z dividido por $y tem resto 1.\n"
Testando a agilidade do sistema de arquivos
Wallpapers aleatórios no Fluxbox
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









