diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt index 64bb27cf92..8ac957f406 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/migration/SharedPrefsMigrationScreenStore.kt @@ -19,7 +19,7 @@ package io.element.android.features.ftue.impl.migration import android.content.SharedPreferences import androidx.core.content.edit import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.libraries.androidutils.hash.md5 +import io.element.android.libraries.androidutils.hash.hash import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.DefaultPreferences import io.element.android.libraries.matrix.api.core.SessionId @@ -49,7 +49,9 @@ class SharedPrefsMigrationScreenStore @Inject constructor( } private fun SessionId.toKey(): String { - return IS_MIGRATION_SCREEN_SHOWN_PREFIX + value.md5() + // Hash the sessionId to get ride of exotic char and take only the first 16 chars, + // The risk of collision is not high. + return IS_MIGRATION_SCREEN_SHOWN_PREFIX + value.hash().take(16) } companion object { diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt index 720fffdaa1..6d4cc321a0 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/hash/Hash.kt @@ -20,10 +20,10 @@ import java.security.MessageDigest import java.util.Locale /** - * Compute a Hash of a String, using md5 algorithm. + * Compute a Hash of a String, using SHA-512 algorithm. */ -fun String.md5() = try { - val digest = MessageDigest.getInstance("md5") +fun String.hash() = try { + val digest = MessageDigest.getInstance("SHA-512") digest.update(toByteArray()) digest.digest() .joinToString("") { String.format(Locale.ROOT, "%02X", it) }