Per un codice di registrazione software, desidero firmare un numero di telefono di circa 14 cifre con una chiave privata e quindi controllarlo in un'app.
Immaginerei di usare RSA o qualcosa di simile, ma la firma dovrebbe essere digitata manualmente (codice di registrazione) e avere solo 10 cifre da digitare facilmente.
Le firme RSA sono di solito più lunghe. Quindi posso Hash e ancora verificarlo?
Ho letto che le firme RSA sono lunghe quanto la chiave privata, quindi ho provato a firmare con una chiave RSA a 32 bit, ma questo mi dà "modulo da short".
Il prossimo approccio sarebbe quello di utilizzare una dimensione della chiave più lunga e l'hash della firma per avere uno più breve. Ma penso che non posso più verificarlo, o c'è ancora un modo?
La mia chiave pubblica sarebbe contenuta nell'app. Il privato meglio non: -)
So che le chiavi di curva ellittica sono più corte, quindi sarebbe utile?
Non deve essere super sicuro (il che è probabilmente impossibile), ma nel modo più sicuro possibile con questa limitazione.
Bonus: è possibile utilizzare un risultato di firma ancora più breve, come ad esempio 16 bit. Il mio approccio è di avere più firme nel risultato in modo da poterne controllare solo una e usare un'altra chiave pubblica più tardi.
Bonus 2: l'implementazione dovrebbe essere relativamente facile da codificare con librerie disponibili per Java / Android e PHP.