Java 关于跨语言、安全加密的建议

Java 关于跨语言、安全加密的建议,java,php,.net,encryption,password-encryption,Java,Php,.net,Encryption,Password Encryption,我正在做这个我希望是我的学位项目,因为我们必须在这里做一个来获得那个蹩脚的学位,无论如何,我有一个SOAP服务器,一个PHP服务器,希望有一个Java应用程序和一个Android应用程序,也许只是一个.NET应用程序,现在我的问题就像你可能猜到的那样,我对加密一无所知,我不打算对几乎所有内容进行加密,但数据库中的密码无论如何都必须加密,现在我知道MD5使用起来很方便,但没有安全性,甚至有些网站和PHP函数可以在心跳时对其进行解密,SHA1也是如此。我提到这两种语言的原因是,我做了一些研究,这使我

我正在做这个我希望是我的学位项目,因为我们必须在这里做一个来获得那个蹩脚的学位,无论如何,我有一个SOAP服务器,一个PHP服务器,希望有一个Java应用程序和一个Android应用程序,也许只是一个.NET应用程序,现在我的问题就像你可能猜到的那样,我对加密一无所知,我不打算对几乎所有内容进行加密,但数据库中的密码无论如何都必须加密,现在我知道MD5使用起来很方便,但没有安全性,甚至有些网站和PHP函数可以在心跳时对其进行解密,SHA1也是如此。我提到这两种语言的原因是,我做了一些研究,这使我有可能在所有不同的语言中简单地使用这两种语言,这就是我所寻找的(有可能在我将要使用的任何语言中轻松部署加密过程),所以你能推荐一种加密方法吗

另外,我做了一些研究,发现在加密字符串中添加内容是很好的(salting),所以如果你们在回答中提到一些salting技术以及其他技术,并且对Java和PHP中使用加密函数(取代md5和sha1)略知一二,我将不胜感激


非常感谢

在security.stackexchange.com上可能会更好。密码学并不是一个任何人都可以告诉你做任何事情的完美方法的领域。你需要自己做很多研究。不过,我建议您使用bcrypt对密码进行哈希处理。SHA-1可能也不错。Bcrypt是一种较慢的算法(因为暴力需要更长的时间,所以有利于密码保护)。另外,在散列之前,一定要先修改密码。大多数语言都应该有可用的库。显然,您也需要使用HTTPS,否则您的用户将以透明的方式传输密码。

谢谢您,尽管我想很多降级应该会告诉我,这是一个错误的问问题的地方。再次感谢你是唯一一个回答的人,并给了我一些信息:)不;SHA1不好,迭代的SHA-1(比如10000多次迭代)可以,单次迭代的SHA-1不行。尽管如此,还是最好使用标准结构,如PBKDF2、bcrypt或scrypt。@SLaks我并不真正推荐它,但我的研究表明,使用强密码(非基于字典、长度合适等)时,对于大多数使用来说,它仍然足够安全。。。如果你不同意,请说明原因。是的,暴力攻击速度很快,但对于强密码来说仍然需要很长时间,即使基于GPU的哈希假设每秒40亿次尝试(这比我所知道的任何GPU都要高),并且是一种“完美”高效的分布式算法,可以在数百个GPU之间分发暴力攻击。安全性很难。在开始之前,你需要学习更多。例如,您需要了解加密和哈希之间的区别。非常感谢我很清楚我需要更多的研究谢谢