使用Android进行SHA-512哈希处理

时间:2017-10-01 07:53:42

标签: java hash sha512

我想知道我是否可以在Android Studio 没有盐的情况下使用SHA-512哈希字符串。

我已经看到了其他问题,但它们都涉及dataName :: GenericData -> String dataIdentifier :: GenericData -> Double dataParsing :: GenericData -> String -> Maybe a dataEmptyInstance :: String -> GenericData ,但我想要这样的事情:

salt

TestBox.text = sha512("Hello, world!"); 会读TextBox;

4 个答案:

答案 0 :(得分:9)

你看到的其他问题使用盐,所以不要像这样使用盐:

MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] digest = md.digest("Hello, world!".getBytes());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
    sb.append(Integer.toString((digest[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println(sb);

基于此answer

答案 1 :(得分:2)

Keds 的例子是对的,但 .length 总是大于 32,(127) 所以更正确的答案应该是

private fun getSHA512(input:String):String{
    val md: MessageDigest = MessageDigest.getInstance("SHA-512")
    val messageDigest = md.digest(input.toByteArray())

    // Convert byte array into signum representation
    val no = BigInteger(1, messageDigest)

    // Convert message digest into hex value
    var hashtext: String = no.toString(16)

    // Add preceding 0s to make it 128 chars long
    while (hashtext.length < 128) {
        hashtext = "0$hashtext"
    }



    // return the HashText
    return hashtext
}

答案 2 :(得分:0)

在kotlin中计算sha-512的方法

    fun getSHA512(input:String):String{
        val md: MessageDigest = MessageDigest.getInstance("SHA-512")
        val messageDigest = md.digest(input.toByteArray())

        // Convert byte array into signum representation
        val no = BigInteger(1, messageDigest)

        // Convert message digest into hex value
        var hashtext: String = no.toString(16)

        // Add preceding 0s to make it 32 bit
        while (hashtext.length < 32) {
            hashtext = "0$hashtext"
        }

        // return the HashText
        return hashtext
    }

答案 3 :(得分:-1)

我猜Kotlin中的等效词是:

fun encriptar(cadena: String): String {

    var md: MessageDigest = MessageDigest.getInstance("SHA-512")
    var digest = md.digest(cadena.toByteArray())
    var sb: StringBuilder = StringBuilder()

    var i = 0
    while (i < digest.count()) {
        sb.append(((digest[i] and 0xff.toByte()) + 0x100).toString(16).substring(0, 1))
        i++
    }

    return sb.toString()
}