Web服务的字符串加密

时间:2012-11-05 14:21:33

标签: java web-services security encryption md5

我有一个Web服务(Java),它需要所有案例的密码。但密码必须安全地来找我。是否有适用于所有平台的标准方式 - > java加密/解密。如何解密可能来自随机平台的字符串(php,.net,iPhone)。

3 个答案:

答案 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。如果你真的赞扬安全,不要考虑任何其他选择。如果我们想在这个领域发挥创意,那么,你承担风险......