SHA-512:你好,我是 Kotlin 的初学者,我想使用 MongoDB

问题描述

我已将我的应用与 Mongo 服务器连接,通过电子邮件密码进行注册。 所以,我的问题包括使用 SHA-512 散列密码,我的数据库无法在 SHA-512 中响应密码 我该怎么做才能让我的 Mongo 数据库可以读取 SHA-512 中的密码登录用户?我用来散列密码代码

@file:JvmName("StringExt")
package com.mongodb.tasktracker
import java.security.MessageDigest
fun String.toSha512(): String{
    val HEX_CHARS = "0123456789ABCDEF"
    val bytes = MessageDigest
            .getInstance("SHA-512")
            .digest(this.toByteArray())
    val result = StringBuilder(bytes.size * 2)

    bytes.forEach {
        val i = it.toInt()
        result.append(HEX_CHARS[i shr 4 and 0x0f])
        result.append(HEX_CHARS[i and 0x0f])
    }
    return result.toString().toLowerCase()
}

我的登录活动代码

if (createuser) {
            // register a user using the Realm App we created in the TaskTracker class
            taskApp.emailPassword.registerUserAsync(username,password.toSha512()) {
                // re-enable the buttons after user registration returns a result
                createuserButton.isEnabled = true
                loginButton.isEnabled = true
                if (!it.isSuccess) {
                    onLoginFailed("Could not register user.")
                    Log.e(TAG(),"Error: ${it.error}")
                } else {
                    Log.i(TAG(),"Successfully registered user.")
                    // when the account has been created successfully,log in to the account
                    login(false)
                }
            }
        } else {
            val creds = Credentials.emailPassword(username,password.toSha512())

            taskApp.loginAsync(creds) {
                // re-enable the buttons after user login returns a result
                loginButton.isEnabled = true
                createuserButton.isEnabled = true
                if (!it.isSuccess) {
                    onLoginFailed(it.error.message ?: "An error occurred.")
                } else {
                    onLoginSuccess()
                }
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)