我正在尝试用Java语言做一个简单的字符串到SHA1的转换器,这就是我得到的……
public static String toSHA1(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
}
catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return new String(md.digest(convertme));
}
当我传递toSHA1("password".getBytes())
时,我得到了[�a�ɹ??�%l�3~��.
我知道这可能是一个简单的编码修复,就像UTF-8,但是有人能告诉我应该怎么做才能得到我想要的5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
吗?还是说我做得完全错了?
发布于 2012-01-31 05:43:55
这是我将字符串转换为sha1的解决方案。它在我的Android应用程序中运行良好:
private static String encryptPassword(String password)
{
String sha1 = "";
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password.getBytes("UTF-8"));
sha1 = byteToHex(crypt.digest());
}
catch(NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
return sha1;
}
private static String byteToHex(final byte[] hash)
{
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
发布于 2013-11-04 18:38:18
Hashing.sha1().hashString( "password", Charsets.UTF_8 ).toString()
发布于 2014-01-30 16:10:19
这是一个简单的解决方案,可以在将字符串转换为十六进制格式时使用:
private static String encryptPassword(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password.getBytes("UTF-8"));
return new BigInteger(1, crypt.digest()).toString(16);
}
https://stackoverflow.com/questions/4895523
复制相似问题