我有一个简单的 Android 客户端,需要与一个简单的 C# HTTP 侦听器“对话”。我想通过在 POST 请求中传递用户名/密码来提供基本级别的身份验证。
MD5 哈希在 C# 中是微不足道的,并且为我的需求提供了足够的安全性,但我似乎无法找到如何在 android 端执行此操作。
编辑:只是为了解决有关 MD5 弱点的担忧 - C# 服务器在我的 Android 客户端用户的 PC 上运行。在许多情况下,他们将在自己的 LAN 上使用 wi-fi 访问服务器,但他们可能会选择从互联网访问服务器,风险自负。此外,服务器上的服务需要使用 MD5 传递给我无法控制的第三方应用程序。
Here http://www.kospol.gr/204/create-md5-hashes-in-android/是一个您可以使用的实现(已更新以使用更多最新的 Java 约定 -for:each
loop, StringBuilder
代替StringBuffer
):
public static String md5(final String s) {
final String MD5 = "MD5";
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance(MD5);
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuilder hexString = new StringBuilder();
for (byte aMessageDigest : messageDigest) {
String h = Integer.toHexString(0xFF & aMessageDigest);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
尽管不建议在涉及基本安全级别(MD5)的系统中使用它。被认为已损坏并且很容易被利用 http://www.mscs.dal.ca/~selinger/md5collision/),有时对于基本任务来说就足够了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)