diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/DecodeFragment.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/DecodeFragment.kt index 22175335..37f160a3 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/DecodeFragment.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/fragment/DecodeFragment.kt @@ -6,8 +6,11 @@ import android.support.design.widget.FloatingActionButton import android.support.v4.app.Fragment import android.text.Editable import android.text.Html +import android.text.Spannable +import android.text.SpannableString import android.text.TextWatcher import android.text.method.LinkMovementMethod +import android.text.style.TypefaceSpan import android.view.LayoutInflater import android.view.Menu import android.view.MenuInflater @@ -49,6 +52,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.security.MessageDigest import kotlin.math.roundToInt class DecodeFragment : Fragment() { @@ -260,12 +264,19 @@ class DecodeFragment : Fragment() { ) } } - dataView.fillDataView(text) + dataView.fillDataView(text, bytes) stampView.setTrackingLink(bytes, format) } - private fun TableLayout.fillDataView(text: String) { - val items = LinkedHashMap() + private fun TableLayout.fillDataView(text: String, bytes: ByteArray) { + val items = LinkedHashMap() + when (prefs.showChecksum) { + "CRC4" -> items[R.string.crc4] = String.format("%X", crc4(bytes)) + "MD5" -> items[R.string.md5] = bytes.md5().toHexString().fold() + "SHA1" -> items[R.string.sha1] = bytes.sha1().toHexString().fold() + "SHA256" -> items[R.string.sha256] = bytes.sha256().toHexString().fold() + else -> Unit + } if (action is WifiAction) { WifiConnector.parseMap(text)?.let { wifiData -> items.putAll( @@ -287,7 +298,7 @@ class DecodeFragment : Fragment() { } private fun TableLayout.fillMetaView(scan: Scan) { - val items = linkedMapOf( + val items = linkedMapOf( R.string.error_correction_level to scan.errorCorrectionLevel, R.string.sequence_size to scan.sequenceSize.positiveToString(), R.string.sequence_index to scan.sequenceIndex.positiveToString(), @@ -317,7 +328,7 @@ class DecodeFragment : Fragment() { } private fun TableLayout.fill( - items: LinkedHashMap + items: LinkedHashMap ) { removeAllViews() visibility = if (items.isEmpty()) View.GONE else { @@ -643,3 +654,35 @@ private fun String.fromHtml() = if ( @Suppress("DEPRECATION") Html.fromHtml(this) } + +private fun ByteArray.md5(): ByteArray = MessageDigest.getInstance("MD5").run { + update(this@md5) + digest() +} + +private fun ByteArray.sha1(): ByteArray = MessageDigest.getInstance("SHA-1").run { + update(this@sha1) + digest() +} + +private fun ByteArray.sha256(): ByteArray = MessageDigest.getInstance("SHA-256").run { + update(this@sha256) + digest() +} + +private fun String.fold(): CharSequence { + val l = length + return if (l > 10) { + val half = l / 2 + val s = substring(0, half) + "\n" + substring(half) + SpannableString(s).apply { + setSpan( + TypefaceSpan("monospace"), + 0, s.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + } else { + this + } +} diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt index 3ba5651d..42bf42df 100644 --- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt +++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/preference/Preferences.kt @@ -133,6 +133,11 @@ class Preferences { apply(SHOW_HEX_DUMP, value) field = value } + var showChecksum = "" + set(value) { + apply(SHOW_CHECKSUM, value) + field = value + } var showRecreation = true set(value) { apply(SHOW_RECREATION, value) @@ -276,6 +281,9 @@ class Preferences { ) showMetaData = preferences.getBoolean(SHOW_META_DATA, showMetaData) showHexDump = preferences.getBoolean(SHOW_HEX_DUMP, showHexDump) + preferences.getString(SHOW_CHECKSUM, showChecksum)?.also { + showChecksum = it + } showRecreation = preferences.getBoolean(SHOW_RECREATION, showRecreation) closeAutomatically = preferences.getBoolean( CLOSE_AUTOMATICALLY, @@ -410,6 +418,7 @@ class Preferences { private const val COPY_IMMEDIATELY = "copy_immediately" private const val SHOW_META_DATA = "show_meta_data" private const val SHOW_HEX_DUMP = "show_hex_dump" + private const val SHOW_CHECKSUM = "show_checksum" private const val SHOW_RECREATION = "show_recreation" private const val CLOSE_AUTOMATICALLY = "close_automatically" private const val DEFAULT_SEARCH_URL = "default_search_url" diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 53140fb1..f4f84aff 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -106,6 +106,8 @@ Показване на допълнителни данни за сканирания баркод. Показване на шестнадесетичен дъмп Показване на шестнадесетичен дъмп на сканираното съдържание. + Show checksum + No checksum Показване на пресъздаден баркод Създай и покажи баркод отново от прочетеното съдържание, ако е възможно. Върщане се след Копиране/Споделяне diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 7c4595cf..62b7a448 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -106,6 +106,8 @@ সনাক্তকৃত বারকোড নিয়ে অতিরিক্ত তথ্য দেখাও। ষড়(hex) সংকেত দেখাও পড়া তথ্যের ষড় সংকেত দেখাও + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. অনুলিপি/ভাগ করার পরে পিছনে যাও diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 63c7cc46..d4a34e85 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -108,6 +108,8 @@ Zobrazí další data o naskenovaném čárovém kódu. Zobrazit hex dump Zobrazí hex dump naskenovaného obsahu. + Show checksum + No checksum Zobrazit zrekonstruovaný kód Zrekonstruovat a zobrazit čárový kód z přečteného obrazu, pokud je to možné. Vrátit se po zkopírování/sdílení diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index e59ff895..d58c7a3b 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -106,6 +106,8 @@ Vis yderligere data om den scannede stregkode. Vis hex-dump Vis et hex-dump af det scannede indhold. + Show checksum + No checksum Vis genskabt stregkode Genskab og vis stregkode fra læst indhold, hvis det er muligt. Gå tilbage efter Kopier/Del diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 41ea567f..9f8e3e6d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -106,6 +106,8 @@ Zusätzliche Daten über den eingelesenen Barcode anzeigen. Hex Dump anzeigen Zeigt einen Hexdump des eingelesenen Inhalts an. + Prüfsumme anzeigen + Keine Prüfsumme anzeigen Wiederhergestellten Barcode anzeigen Barcode aus dem gelesenen Inhalt wiederherstellen und anzeigen, wenn möglich. Automatisch zurückkehren diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e7c5d352..f0dcb8ee 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -106,6 +106,8 @@ Muestra datos adicionales del código escaneado. Mostrar volcado hexadecimal Muestra un volcado hexadecimal del contenido escaneado. + Show checksum + No checksum Mostrar reconstrucción del código Reconstruye y muestra el código de barras desde el contenido leído si es posible. Retroceder tras Copiar/Compartir diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 854135ff..68f33c40 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -106,6 +106,8 @@ نمایش داده‌های اضافی در مورد بارکد پویش شده. نمایش کد هگز استخراج شده نمایش کد هگز استخراج شده از محتویات پویش شده. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. بازگشت پس از رونوشت یا هم‌رسانی diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 95732b0a..f987e427 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -106,6 +106,8 @@ Afficher des informations supplémentaires sur le code-barres scanné. Afficher le dump hexadécimal Afficher le dump hexadécimal du contenu scanné. + Show checksum + No checksum Afficher le code-barres recréé Recréer et afficher, si possible, le code-barres à partir du contenu scanné. Revenir après une copie/partage diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index f071a9c7..b943a17a 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -106,6 +106,8 @@ További adatok megjelenítése a beolvasott vonalkódokról. Hexakiírás megjelenítése A beolvasott tartalom hexakiírásának megjelenítése. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Ugrás vissza másolás vagy megosztás után diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index d7fdc9dd..9a822146 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -105,6 +105,8 @@ Tampilkan data tambahan tentang barcode yang dipindai. Tampilkan hex dump Tampilkan hex dump dari konten hasil pemindaian. + Show checksum + No checksum Tampilkan barcode yang dibuat ulang Buat ulang dan tampilkan barcode dari isi konten jika memungkinkan. Kembali setelah Salin/Berbagi diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f667ea92..b656a666 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -106,6 +106,8 @@ Visualizza dati aggiuntivi codice a barre scansionato. Visualizza dump esadecimale Visualizza un dump esadecimale dei contenuti scansionati. + Show checksum + No checksum Visualizza codice a barre ricreato Ricrea e visualizza, se possibile, il codice a barre, dal contenuto letto. Vai indietro dopo la copia/condivisione diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 329f0cc1..cb38fcf8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -105,6 +105,8 @@ スキャンされたバーコードの追加データを確認できるようにします。 16進数を表示 スキャンされたコンテンツの16進数データを確認できるようにします。 + Show checksum + No checksum 再生成したバーコードを表示 可能であれば、読み取ったコンテンツからバーコードを再生成して表示します。 コピー/共有後に戻る diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index fb8408f2..d657b162 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -106,6 +106,8 @@ სკანირებულ შტრიხ-კოდებზე დამატებითი ინფორმაციის ჩვენება. თექვსმეტობითი dump-ის ჩვენება სკანირებული შტრიხ-კოდის კონტენტის თექვსმეტობითი dump-ის ჩვენება. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Go back after Copy/Share diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 7964f783..2ae84aed 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -105,6 +105,8 @@ Show additional data about the scanned barcode. Show hex dump Show a hex dump of the scanned contents. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Go back after Copy/Share diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 91d4d2b8..63ead381 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -106,6 +106,8 @@ Toon extra gegevens over de gescande barcode. Hex-dump tonen Hex-dump van de gescande inhoud tonen. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Teruggaan na kopiëren/delen diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 26cc574d..b54c77ef 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -76,6 +76,8 @@ Pokazuj zrzut szesnastkowy Pokaż zeskanowaną zawartośc w postaci szesnastkowej + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Wróć po skopiowaniu/udostępnieniu diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 89e6282b..0b84fc26 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -106,6 +106,8 @@ Mostrar dados adicionais de código digitalizado. Mostrar impressão hexadecimal Mostrar impressão hexadecimal de conteúdo digitalizado. + Show checksum + No checksum Mostrar código recuperado Se possível, recupere e mostre código do conteúdo lido. Voltar após copiar/compartilhar diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index dd64ff53..f84398a1 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -108,6 +108,8 @@ Показывать дополнительную информацию о считанных штрих-кодах. Показывать шестнадцатеричный дамп Показывать шестнадцатеричный дамп содержимого считанного штрих-кода. + Show checksum + No checksum Показывать восстановленный штрих-код Показывать штрих-код, восстановленный из считанного содержимого. Возврат после копирования/обмена diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 87a72bce..979a213a 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -106,6 +106,8 @@ Taranan barkod ile ilgili ek veriyi göster Hex yığınını göster Taranan içeriklerin hex yığınını göster. + Show checksum + No checksum Yeniden oluşturulan barkodu göster Mümkünse okunan içerikten barkodu yeniden oluştur ve göster. Kopyala/Paylaş\'tan sonra geri dön diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 76303077..fc61418b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -107,6 +107,8 @@ Показувати додаткові дані про відскановані штрих-коди. Показувати шістнадцятковий дамп Показувати шістнадцятковий дамп відсканованого вмісту. + Show checksum + No checksum Показати відновлений штрих-код Відтворити і показати штрих-код із прочитаного вмісту, якщо це можливо. Повернутися після копіювання/поширення diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 8dcf0b4c..6df00f88 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -105,6 +105,8 @@ Hiện thêm thông tin về mã vạch quét được. Hiện mã thập lục phân Hiện mã thập lục phân từ mã quét được. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Quay lại sau khi Sao chép/Chia sẻ diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 227d50b7..7f190660 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -105,6 +105,8 @@ 显示已扫描条码的额外数据 显示16进制数据 显示已扫描条码的16进制数据 + Show checksum + No checksum 显示重新创建的条码 如果可以,就从读取内容中重新创建并显示条码。 复制/分享后自动返回 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 646416f1..8faad098 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -105,6 +105,8 @@ 顯示已掃描條碼的額外資訊 顯示 Hex dump 顯示已掃描條碼的十六進位轉儲資訊 + Show checksum + No checksum 顯示重新產生的條碼 如果可以,從讀取內容中重新建立並顯示條碼 複製 / 分享後自動返回 diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 6ddd411c..c6039a41 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -4,4 +4,8 @@ http://example.com/?content= https://github.com/markusfisch/BinaryEye + CRC4 + MD5 + SHA1 + SHA256 diff --git a/app/src/main/res/values/show_checksum.xml b/app/src/main/res/values/show_checksum.xml new file mode 100644 index 00000000..0190daa9 --- /dev/null +++ b/app/src/main/res/values/show_checksum.xml @@ -0,0 +1,16 @@ + + + @string/no_checksum + @string/crc4 + @string/md5 + @string/sha1 + @string/sha256 + + + + CRC4 + MD5 + SHA1 + SHA256 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b7013483..f0e8efdd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -106,6 +106,8 @@ Show additional data about the scanned barcode. Show hex dump Show a hex dump of the scanned contents. + Show checksum + No checksum Show recreated barcode Recreate and show barcode from read content if possible. Go back after Copy/Share diff --git a/app/src/main/res/xml-v11/preferences.xml b/app/src/main/res/xml-v11/preferences.xml index a49add09..8cc9ac87 100644 --- a/app/src/main/res/xml-v11/preferences.xml +++ b/app/src/main/res/xml-v11/preferences.xml @@ -120,6 +120,12 @@ android:key="show_hex_dump" android:title="@string/show_hex_dump" android:summary="@string/show_hex_dump_summary"/> + + +