gpt4 book ai didi

java - 将 Base64 编码的字符串传递到 sha512 函数会得到与硬编码时不同的结果

转载 作者:行者123 更新时间:2023-12-01 08:58:52 25 4
gpt4 key购买 nike

我正在 Android Studio 中编码,并尝试创建 Base64 编码和 sha512 哈希字符串。

功能是:

private String getBase64(String data){

try{

byte[] enc = data.getBytes("UTF-8");
return Base64.encodeToString(enc, Base64.DEFAULT);

}catch (Exception e){
e.printStackTrace();
return null;
}

}

private String getSHA(String data){

try {

MessageDigest mda = MessageDigest.getInstance("SHA-512");
byte[] digesta = mda.digest(data.getBytes("UTF-8"));

return convertByteToHex(digesta);

}catch(Exception e){
e.printStackTrace();
return null;
}
}


public String convertByteToHex(byte data[]) {
StringBuilder hexData = new StringBuilder();
for (byte aData : data)
hexData.append(String.format("%02x", aData));
return hexData.toString();
}

然后调用他们:

    // line below prints VGVzdDox as it should
Log.d("GO", "Working Base64: " + getBase64("Test:1"));

// line below prints: 3553AF9EDC389314B0F7354B51FEA7EB089C039EA77A0FD7BD61798A8DD14B1292B353B9E00789B2698B072AF5B05417DDDAA1870ADF9E1DE9C1F96D9465DF56
// as it should
Log.d("GO", "Working SHA: " + getSHA("VGVzdDox"));


String b = getBase64("Test:1");

// line below prints VGVzdDox again, as it should
Log.d("Base64", b);

String s = getSHA(b);

// Now this line prints a7d1bdc5d6497d787b35ce52774365150a2e21084958ffc14570367f3764b938fc1191d06006f1908084518c9697cbff3f2830a1ac003ef8ace36a0667dce92d
// Not sure why?
Log.d("SHA", s);

所以最后的输出是错误的。然而,在对 Base64 编码的字符串进行硬编码时,getBase64 是正确的,getSHA 也是正确的。我不知道为什么。这只是主要 Activity ,没有执行其他代码。

最佳答案

这看起来像你的字符串

b

最后有一个新行,我使用带有字符串的在线 sha 512 生成器对其进行了测试:

“VGVzdDox”和

“VGVzdDox

"

第一个输出是:

3553AF9EDC389314B0F7354B51FEA7EB089C039EA77A0FD7BD61798A8DD14B1292B353B9E00789B2698B072AF5B05417DDDAA1870ADF9E1DE9C1F96D9465DF56

第二个的输出是:

A7D1BDC5D6497D787B35CE52774365150A2E21084958FFC14570367F3764B938FC1191D06006F1908084518C9697CBFF3F2830A1AC003EF8ACE36A0667DCE92D

所以也许可以使用 Stirng.trim() 方法来摆脱行分隔符,但我没有测试它

关于java - 将 Base64 编码的字符串传递到 sha512 函数会得到与硬编码时不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com