Ho un problema con le prestazioni SHA-1 su Android. In C# viene calcolato hash in circa 3 secondi, lo stesso calcolo per Android richiede circa 75 secondi. Penso che il problema sia nella lettura dell'operazione da file, ma non sono sicuro di come migliorare le prestazioni.Android, calcolo dell'hash SHA-1 dal file, algoritmo più veloce
Ecco il mio metodo di generazione hash.
private static String getSHA1FromFileContent(String filename)
{
try
{
MessageDigest digest = MessageDigest.getInstance("SHA-1");
//byte[] buffer = new byte[65536]; //created at start.
InputStream fis = new FileInputStream(filename);
int n = 0;
while (n != -1)
{
n = fis.read(buffer);
if (n > 0)
{
digest.update(buffer, 0, n);
}
}
byte[] digestResult = digest.digest();
return asHex(digestResult);
}
catch (Exception e)
{
return null;
}
}
Qualche idea, come posso migliorare le prestazioni?
qual è la dimensione del file che stai leggendo? – SirDarius
Prova a eseguire il codice senza il metodo 'asHex (..)' (restituisci solo byte []). –
Sto usando un file da 6 MB, rimuovere asHex (..) non ha aiutato:/ –