19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.engine.cache; 2f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd 3a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Juddimport com.bumptech.glide.load.Key; 49aa6dd1e9e9497e54d38a8f5f686dd510b224ee1Sam Juddimport com.bumptech.glide.util.LruCache; 5f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Juddimport com.bumptech.glide.util.Util; 6f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd 7f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Juddimport java.io.UnsupportedEncodingException; 8f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Juddimport java.security.MessageDigest; 9f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Juddimport java.security.NoSuchAlgorithmException; 10f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd 11f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Juddpublic class SafeKeyGenerator { 128bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd private final LruCache<Key, String> loadIdToSafeHash = new LruCache<Key, String>(1000); 13f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd 14a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd public String getSafeKey(Key key) { 158bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd String safeKey; 168bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd synchronized (loadIdToSafeHash) { 178bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd safeKey = loadIdToSafeHash.get(key); 188bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd } 19f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd if (safeKey == null) { 20f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd try { 2136db20745f9e19858647f754a6caf2785b23e781Sam Judd MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); 22ad7119b91370d7418b24f5646b35190aa76e5e66Sam Judd key.updateDiskCacheKey(messageDigest); 2336db20745f9e19858647f754a6caf2785b23e781Sam Judd safeKey = Util.sha256BytesToHex(messageDigest.digest()); 24f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd } catch (UnsupportedEncodingException e) { 25f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd e.printStackTrace(); 26e407b540e31154bf8d232659708744e733ced180Sam Judd } catch (NoSuchAlgorithmException e) { 27e407b540e31154bf8d232659708744e733ced180Sam Judd e.printStackTrace(); 28f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd } 298bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd synchronized (loadIdToSafeHash) { 308bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd loadIdToSafeHash.put(key, safeKey); 318bd8ac7321e75f75fa4f4ac8f4a2666f98643e3cSam Judd } 32f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd } 33f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd return safeKey; 34f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd } 35f59163dea0fd9b71ad8b3bce80f6852f38e6eab8Sam Judd} 36