Ir para conteúdo

POWERED BY:

Arquivado

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

Adriel Filipe

criptografia RSA

Recommended Posts

Boa noite à todos do fórum. Criei um programa em python que segue a lógica do RSA (gera dois primos grandes, n=multiplicação desses primos, pego um ''e'' tal que mdc(e,phi(n))=1, etc...) .

Quando escolho números pequenos (coloquei n=21,p=3,q=7,phi(n)=12,e=5,d=5 por exemplo) eles pegam normalmente... Contudo, quando começo a gerar os números, não consigo descriptografar! Alguém poderia por favor me ajudar?

segue o código:

import random
from random import getrandbits
def criptografa(m,u,n):
    m1=pow(m,u,n)
    return m1
def euclides_extendido(a, b):
    lastremainder, remainder = abs(a), abs(b)
    x, lastx, y, lasty = 0, 1, 1, 0
    while remainder:
        lastremainder, (quotient, remainder) = remainder, divmod(lastremainder, remainder)
        x, lastx = lastx - quotient * x, x
        y, lasty = lasty - quotient * y, y
    return lastremainder, lastx * (-1 if a < 0 else 1), lasty * (-1 if b < 0 else 1)

def modinv(a, m):
    g, x, y = euclides_extendido(a, m)
    if g != 1:
        raise ValueError
    return x % m
def phi(p,q):
    aux = (p - 1) * (q - 1)
    return aux
def mdc(num1, num2):
    resto = None
    while resto is not 0:
        resto = num1 % num2
        num1  = num2
        num2  = resto

    return num1
small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

def miller_rabbin(n, k):
    if n < 2: return False
    for p in small_primes:
        if n < p * p: return True
        if n % p == 0: return False
    r, s = 0, n - 1
    while s % 2 == 0:
        r += 1
        s //= 2
    for _ in range(k):
        a = random.randrange(2, n - 1)
        x = pow(a, s, n)
        if x == 1 or x == n - 1:
            continue
        for _ in range(r - 1):
            x = pow(x, 2, n)
            if x == n - 1:
                break
        else:
            return False
    return True

p = getrandbits ( 512 )
q = getrandbits ( 512 )
while not (miller_rabbin(p,100)==True or miller_rabbin(q,100)==True):
    p = getrandbits(512)
    q = getrandbits(512)
phi_n=phi(p,q)
n=p*q
e=2
while not (mdc(e,phi_n)==1):
    e = random.randint(2, phi_n)
d=modinv(e,phi_n)
m=55
print(m)
m1=criptografa(m,e,n)
m=criptografa(m1,d,n)
print(e)
print((d*e)%phi_n)
print(d)
print(n)
print(m1)
print(m)

Desde já, grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Marcio_123
      pessoal bllll
       
      to tentando gravar esse arquivo tentando criptografar para evitar entrada de sql injection
       
      esta gravando legal mas o dado que esta o addslashes esta gravando em BRANCO o certo seria colocar \ antes de '
       
      alguem pode dar um help ai. :)
       
      <?php session_start(); ob_start(); $btsalvar = filter_input (INPUT_POST, 'btsalvar', FILTER_SANITIZE_STRING); if($btsalvar) { $campos = filter_input_array(INPUT_POST, FILTER_DEFAULT); $campos['senha'] = password_hash($campos['senha'], PASSWORD_DEFAULT); // var_dump($campos); $result_usuario = "INSERT INTO tb_usuarios (nome, endereco, numero, complemento, cep, senha) VALUES ( '" .addslashes($campos['nome']). "', // aqui coloca \ antes das ' '" .$campos['endereco']. "', '" .$campos['numero']. "', '" .$campos['complemento']. "', '" .$campos['cep']. "', '" .$campos['senha']. "' )"; $resultado_usario = mysqli_query($conn, $result_usuario); if(mysqli_insert_id($conn)){ $_SESSION['msgcad'] = "Usuário cadastrado com sucesso"; header("Location: Cadastro"); }else{ $_SESSION['msg'] = "Erro ao cadastrar o usuário"; } } ?>  
    • Por Salvatore
      Estou fazendo um sistema de login porém ele não consegue identificar a senha criptografada 
       
      Como a senha e definida? a senha e definida a partir de um sistema em java(não feito por mim) então não posso editar
       
      Exemplo de senha/Criptografada no bancos de dados
      12345m = $MD5$1a7b45ec4c0661b31f3e0cf2f2738d10@wbfqs/so33fBHLREhffQ7w==
       
      no sistema em java ela e reconhecida como 12345m
      mas no meu sistema em php n
      alguém ajuda eu 
       
      Meu codigo
      <?php include("admin/bd/config.php"); if (isset($_POST['Usuario']) && isset($_POST['Senha'])) { $Usuario = $_POST['Usuario']; $Senha = md5($_POST['Senha']); $get = mysqli_query($con,"SELECT * FROM nlogin WHERE Usuario = '$Usuario'") or die(mysqli_error(con)); $num = mysqli_num_rows($get); if ($num == 1) { while ($percorrer = mysqli_fetch_assoc($get)) { if (password_verify ( $_POST['Senha'] , $percorrer['Senha'] )){ $adm = $percorrer['adm']; $Usuario = $percorrer['Usuario']; session_start(); if ($adm == 1) { $_SESSION['adm'] = $Usuario; header("Location: admin/index.php"); }else{ $_SESSION['nor'] = $username; header("Location: index.php"); } } } } } Ele apenas fica travado na pagina vlogin.php e falando que a conexão com o bancos de dados foi bem sucedida(seta por mim) e não faz nada a mais, nem redireciona
    • Por Almeidareii
      Bom, tenho 3 enigmas para descobrir porém não estou conseguindo, se puderem me dar uma  ajuda, com alguma dica ou com a propria rsp kk
      Encontrar algum padrao, alguma coisa ja ajuda, obrigado a todos.
      obs eles podem estar interligados
       
      1)
      139 28 49 19 189 11 5 18
      156 66 49 19 95 10 
      214 9 
      19 5 88 15 45 29
      101 11 156 66
      129 10 19 5 88 15
      101 11 19 5 45 29
      129 10
      214 9
      45 29 139 26
      156 66 19 5 95 10
      43 63 136 21 5 18
      214 9
      156 66 5 18
      189 11 88 15 156 66 49 19
      95 10 19 5 139 28
      101 11 5 18 129 10
      139 28 49 19 189 11 5 18
      101 11 19 5 45 29
      19 5 88 15 45 29
      189 11 88 15 156 66 49 19
      156 66 19 5 95 10
      95 10 19 5 139 28
      101 11 156 66
      88 15 139 26 38 26
      95 10 139 26 189 11
      139 28 5 18 156 66 5 18
      156 66 19 5 95 10
      19 5 88 15 45 29
      101 11 156 66
      214 9
      43 63 136 21 5 18
      139 28 49 19 189 11 5 18
      19 5 88 15 45 29
      129 10 19 5 88 15
      19 5 49 19 129 10
      19 5 88 15 45 29
      101 11 5 18 129 10
      139 28
      101 11 5 18 129 10
      129 10 19 5 88 15
      129 10
      19 5 88 15 45 29
      156 66 189 11 45 29
      101 11 5 18 129 10
      101 11 19 5 45 29
      43 63
      101 11 156 66
      129 10
      101 11 19 5 45 29
      214 9
      156 66 5 18
      139 28 49 19 189 11 5 18
      19 5 88 15 45 29
       
      2) 
      Imf%dmstpv"|jtwp1"Jv(oiw#fppvmn{o!uk'yknxwcu1'Lsc"nwpvv!jmkmdlo0
      E!fgsfggj-"wunhj#ptt(ptprv!fhth&k!lozyk'tzg#d'hnq0!C'wsuoqf$wh}0
       
      3)  Uma imagem com varios números em japones que traduzidos davam nisso (j? é por que tinha um j e eu não sei o seu valor):
      10 5 1 10 9 8 10 6 6 10 7 10 1 10 9 2 10 4 3 10 4 10 9 5 10 5 10 3 10 5 10 7 10 10 9 100 2 10 1 7 10 4 10 7 7 10 9 3 10 3 9 10 2 2 10 6 4 8 10 9 6 8 3 10 10 9 5 10 4 10 2 4 10 5 10 9 6 10 9 6 2 10 1 10 9 10 2 5 4 10 3 10 9 4 10 7 2 10 9 10 1 10 2 10 7 10 8 10 7 2 10 5 10 9 9 10 10 9 4 10 10 10 7 10 4 10 6 2 10 2 10 5 10 9 7 10 10 7 2 10 4 10 7 10 7 10 3 5 10 9 7 10 9 10 6 10 6 j? 10 9 6 10 2 10 7 2 10 8 10 9 9 10 6 10 9 4 10 4 10 7 2 10 4 10 9 6  10 4 j? 10 3 100 10 3 10 2
    • Por Motta
      Após vazamento de supostos diálogos de Moro, Bolsonaro e integrantes do Executivo usarão celulares criptografados da Abin
×

Informação importante

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