Browse Source

Update `md5`: support buffers

Him188 6 năm trước cách đây
mục cha
commit
cfbf4f8ccc

+ 2 - 1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/platformAndroid.kt

@@ -42,7 +42,8 @@ actual fun localIpAddress(): String = runCatching {
  *
  * @return 16 bytes
  */
-actual fun md5(byteArray: ByteArray): ByteArray = MessageDigest.getInstance("MD5").digest(byteArray)
+actual fun md5(byteArray: ByteArray, offset: Int, length: Int): ByteArray =
+    MessageDigest.getInstance("MD5").apply { update(byteArray, offset, length) }.digest()
 
 fun InputStream.md5(): ByteArray {
     val digest = MessageDigest.getInstance("md5")

+ 1 - 1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/platform.kt

@@ -32,7 +32,7 @@ expect fun ByteArray.unzip(offset: Int = 0, length: Int = this.size - offset): B
  *
  * @return 16 bytes
  */
-expect fun md5(byteArray: ByteArray): ByteArray
+expect fun md5(byteArray: ByteArray, offset: Int = 0, length: Int = byteArray.size - offset): ByteArray
 
 inline fun md5(str: String): ByteArray = md5(str.toByteArray())
 

+ 2 - 1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsJvm.kt

@@ -20,7 +20,8 @@ import java.net.InetAddress
 import java.security.MessageDigest
 import java.util.zip.Inflater
 
-actual fun md5(byteArray: ByteArray): ByteArray = MessageDigest.getInstance("MD5").digest(byteArray)
+actual fun md5(byteArray: ByteArray, offset: Int, length: Int): ByteArray =
+    MessageDigest.getInstance("MD5").apply { update(byteArray, offset, length) }.digest()
 
 fun InputStream.md5(): ByteArray = this.use {
     val digest = MessageDigest.getInstance("md5")