Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10

    [ALGORITMO] Generare un mumero univoco

    Ciao a tutti,

    ho necessità di trovare un algoritmo che, data una chiave (numerica) mi generi un numero univoco

    per esempio: dato il numero "4584" mi dia in uscita "1475487". E devo essere in grado di rifare il processo inverso, ovvero, dato "1475487", mi torni a dare "4584".

    qualcuno ha idee (o anche solo link) su dove partire per una ricerca simile?

    grazie in anticipo

  2. #2
    Mi sembra una sciocchezza..

    per esempio, se ti viene dato il numero n, lo elevi al quadrato e ottieni un altro numero che è ottenuto dal precedente e non da nessun altro.

    Forse ho capito male.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    10
    no, mi sono spiegato male io!

    ho bisogno di una specie di "codifica"

    data una chiave mi generi un numero che non sia facilmente riconducibile alla chiave.
    il procedimento però deve essere reversibile e univoco.

    l'elevamento a potenza è un'idea, ma è troppo facilmente decodificabile

  4. #4
    Potresti usare l'algoritmo RSA, che è un algoritmo asimmetrico; quindi c'è una chiave che codifica e una che decodifica.

    Le chiavi solitamente hanno una dimensione di 1024 bits, ma può capitare che vengano utilizzare chiavi da 2024 adirittura.

    L'algoritmo di RSA:

    Creare la coppia di chiavi, codificare, decodificare
    ---------------------------------------------------
    L'algoritmo per creare la coppia di chiavi è il seguente:

    p = numero primo
    q = numero primo
    n = p*q
    f(n) = (p-1)*(q-1)
    e = primo rispetto f(n)
    d = e ^ -1 mod f(n)
    chiave pubblica = {n, e}
    chiave privata = {n, d}

    La codifica si fa così:

    C = M ^ e mod n

    La decodifica così:

    M = C ^ d mod n

    Per essere efficiente i numeri p e q devono essere molto grandi.

    mettiamo caso che venga fuori 42(42 è il messaggio in chiaro numerico), quindi, per prima cosa generi le chiavi:

    p = 7
    q = 13
    n = 7*13 = 91
    f(n) = 6 * 12 = 72
    e = primo riepstto a f(n) =5
    d = 5 ^ -1 mod 72 = 29
    chiave pubblica = {91, 5}
    chiave privata = {91, 29}

    codifichi:

    M = 42
    C = 42 ^ 5 mod 91 = 130691232 mod 91 = 35
    C = 35

    Quindi sapremo che un intero che rappresenta il cifrato è 35.

    Per decifrare si ottiene

    C = 35
    M = 35 ^ 29 mod 91 = 5.997541836x10^44 mod 91 = 42

    Per risolvere questo In Java esiste la classe BigInteger C++ c'è il template complex ad esempio e così via.


    Comunque puoi trovare la spiegazione su questo algoritmo anche qua:
    http://sicurezza.html.it/guide/lezio...ubblica-e-rsa/

  5. #5
    Ma in sostanza ti serve un algoritmo di hashing?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.