我有一个Web服务(Java),它需要所有案例的密码。但密码必须安全地来找我。是否有适用于所有平台的标准方式 - > java加密/解密。如何解密可能来自随机平台的字符串(php,.net,iPhone)。
答案 0 :(得分:0)
通常使用某种算法(MD5)加密密码并与服务交换...您不必解密密码......就像您创建密码的MD5哈希字符串而密钥是实际密码它自。
因此,在服务器上,您将存储实际密码的MD5哈希,并且每个客户端将创建给定密码的MD5哈希字符串,最后您将验证两个哈希字符串以进行密码验证...
您可以轻松地在线找到Java代码来创建MD5哈希...一个例子是
public static String convertStringToMD5Hash(String string) {
byte[] hash;
try {
hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5 not supported?", e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("UTF-8 not supported?", e);
}
StringBuilder hex = new StringBuilder(hash.length * 2);
for (byte b : hash) {
int i = (b & 0xFF);
if (i < 0x10)
hex.append('0');
hex.append(Integer.toHexString(i));
}
return hex.toString();
}
免责声明:代码适用于我的机器,可能需要 改进/优化生产用途
答案 1 :(得分:0)
使用WS-Security用户名令牌,确保它能解决跨平台问题。
http://wso2.org/library/240(兰帕特)
或
使用Apache WSS4J
http://www.ibm.com/developerworks/webservices/library/ws-Axis2/index.html
答案 2 :(得分:0)
就像@CodesInChaos在评论中所说,使用SSL / TLS。如果你真的赞扬安全,不要考虑任何其他选择。如果我们想在这个领域发挥创意,那么,你承担风险......