{"id":12941,"date":"2018-09-24T15:03:55","date_gmt":"2018-09-24T13:03:55","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12941"},"modified":"2018-09-24T15:03:55","modified_gmt":"2018-09-24T13:03:55","slug":"android-crittografare-dati-velocemente-con-encryption","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/android-crittografare-dati-velocemente-con-encryption\/","title":{"rendered":"Android, crittografare dati velocemente con Encryption"},"content":{"rendered":"<p>In Android, \u00e8 possibile utilizzare tutto il sottosistema di crittografia disponibile in Java. Tale comparto \u00e8 particolarmente fornito e adatto ad ogni uso per crittografia sia simmetrica sia asimmetrica nonch\u00e9 certificati digitali per\u00f2 pu\u00f2 risultare piuttosto dispersivo per chi necessita di un approccio rapido per salvare i propri dati in maniera pi\u00f9 sicura. Per questo presentiamo una libreria efficace ma dall&#8217;approccio piuttosto rapido: <a href=\"https:\/\/github.com\/simbiose\/Encryption?utm_source=android-arsenal.com&amp;utm_medium=referral&amp;utm_campaign=935\" target=\"_blank\" rel=\"noopener\">Encryption<\/a>.<\/p>\n<p>Per farne uso in una nostra app dobbiamo, per prima cosa, includerla nel progetto Android Studio:<\/p>\n<ul>\n<li>richiedendo di utilizzare il repository di <a href=\"https:\/\/jitpack.io\/\" target=\"_blank\" rel=\"noopener\">JitPack<\/a>:\n<pre class=\"lang:java decode:true \">allprojects {\r\n  repositories {\r\n    ...\r\n    maven { url 'https:\/\/jitpack.io' }\r\n  }\r\n}<\/pre>\n<\/li>\n<li>inserendo successivamente l&#8217;opportuna direttiva Gradle:\n<pre class=\"lang:java decode:true\">compile 'com.github.simbiose:Encryption:2.0.0'<\/pre>\n<\/li>\n<\/ul>\n<p>A questo punto, la si pu\u00f2 utilizzare nel seguente modo:<\/p>\n<pre class=\"lang:java decode:true\">String chiave= \"mia password\";\r\nString salt = \"una string da usare come Salt\";\r\nbyte[] iv = new byte[16];\r\nEncryption encryption = Encryption.getDefault(key, salt, iv);\r\n\r\nString encrypted = encryption.encryptOrNull(\"Questa \u00e8 la frase segreta che deve essere crittografata\");<\/pre>\n<p>Le prime righe servono per inizializzare l&#8217;oggetto codificatore al quale abbiamo fornito la parola chiave da usare, il salt ed un vettore di inizializzazione per ridurre l&#8217;efficacia di attacchi finalizzati alla decodifica non autorizzata.<\/p>\n<p>Per riportare in chiaro il nostro messaggio crittografato, conservato nella stringa encrypted, sar\u00e0 sufficiente riutilizzare l&#8217;oggetto <em>encryption <\/em>nel seguente modo:<\/p>\n<pre class=\"lang:java decode:true\">String decrypted = encryption.decryptOrNull(encrypted);<\/pre>\n<p>Inoltre, per una configurazione dell&#8217;oggetto Encryption pi\u00f9 particolareggiata si pu\u00f2 utilizzare l&#8217;approccio del <em>Builder<\/em> incluso:<\/p>\n<pre class=\"lang:java decode:true\">Encryption encryption = new Encryption.Builder()\r\n                .setKeyLength(128)\r\n                .setKey(\"YourKey\")\r\n                .setSalt(\"YourSalt\")\r\n                .setIv(yourByteIvArray)\r\n                .setCharsetName(\"UTF8\")\r\n                .setIterationCount(1)\r\n                .setDigestAlgorithm(\"SHA1\")\r\n                .setBase64Mode(Base64.DEFAULT)\r\n                .setAlgorithm(\"AES\/CBC\/PKCS5Padding\")\r\n                .setSecureRandomAlgorithm(\"SHA1PRNG\")\r\n                .setSecretKeyType(\"PBKDF2WithHmacSHA1\")\r\n                .build();<\/pre>\n<p>Considerando che le app mobile vengono eseguite in dispositivi portati al seguito\u00a0e che rischiano di essere persi o rubati facilmente, la sicurezza dei dati in esse contenuti \u00e8 molto importante ed una libreria di questo genere pu\u00f2 aiutarci ad offrire funzionalit\u00e0 rassicuranti ai nostri utenti.<\/p>\n<p>Provatela &#8211; se non l&#8217;avete ancora fatto &#8211; e fateci sapere cosa ne pensate.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Android, \u00e8 possibile utilizzare tutto il sottosistema di crittografia disponibile in Java. Tale comparto \u00e8 particolarmente&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13598,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1682],"tags":[1886,1796],"class_list":["post-12941","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-crittografia","tag-sicurezza-informatica"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12941"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12941\/revisions"}],"predecessor-version":[{"id":13620,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12941\/revisions\/13620"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13598"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}