我们使用一个db(mongo)作为我们的移动(Nodejs)和桌面(Java)应用程序。
问题是,我们希望为这两个应用程序使用不同的登录/注册rest服务。现在,我们的注册模块仅用java(加密)实现。我们使用java的SecureRandom库创建一个salt,放入数据库,然后使用它生成密码哈希。然后,当用户登录时,我们只获取用户的salt (假设它存在),然后使用db中的salt再次生成哈希密码,然后比较数据库中生成的哈希密码。
问题是在nodejs中,我找不到任何模块/库来生成与java中生成的盐完全一样的盐。
我需要在nodejs中散列未加密的密码,然后将其与在java中生成的db中的散列密码进行比较。
我该如何处理这个问题?任何帮助都将不胜感激。谢谢。
发布于 2014-01-21 09:48:59
没有必要创建完全相同的盐,因为盐只创建一次,然后存储在某处。所有其他人都得用这种盐。因此,如果node.js有不同的盐生成(即Math.random()),那么就可以了,因为
您需要的是相同的散列机制!这应该很容易,因为在Java和node.js中有许多相互兼容的散列算法实现(即md5或sha3)。
发布于 2014-01-21 09:52:08
问题是在nodejs中,我找不到任何模块/库来生成与java中生成的盐完全一样的盐。
如果你能找到一种方法在不同的时间产生两种完全相同的盐,那么它就超越了盐渍的目的,因为最好的盐是尽可能随机的。您需要做的是从数据库中获取salt,Java对其进行选通,并使用获取的salt来执行散列。
https://stackoverflow.com/questions/21253040
复制相似问题