2014-01-21 2 views
0

우리는 모바일 (nodejs) 및 데스크탑 (java) 응용 프로그램에 하나의 db (mongo)를 사용하고 있습니다.동일한 데이터베이스를 사용하여 java 및 nodejs에서 hash 및 salt를 생성하는 방법

문제는 두 앱에 서로 다른 로그인/가입 레스트 서비스를 사용하고 싶다는 것입니다. 현재 가입 모듈은 java (암호화)에서만 구현됩니다. java의 SecureRandom 라이브러리를 사용하여 소금을 만들고 db에 넣은 다음 암호 해시를 생성하는 데 사용합니다. 그런 다음 사용자가 로그인하면 사용자의 소금 (존재한다고 가정)을 얻은 다음 db의 소금을 사용하여 해시 암호를 다시 생성 한 다음 데이터베이스에서 생성 된 해시 암호를 비교합니다.

문제는 nodejs에 있습니다. java에서 생성 된 것과 같은 정확한 소금을 생성 할 모듈/라이브러리를 찾을 수 없습니다.

암호화되지 않은 암호를 nodejs에 해시 한 다음 java에서 생성 된 db의 해시 된 암호와 비교해야합니다.

어떻게이 문제에 접근합니까? 어떤 도움이라도 대단히 감사 할 것입니다. 감사.

+0

'java에서 생성 된 것과 같은 정확한 소금'이란 무엇입니까? 소금은 임의 비트의 목록 일뿐입니다. – Algiz

+0

요점은, 나는 암호로 고쳐 쓴 암호를 nodejs에 해시 한 다음 java에서 생성 된 db의 해쉬 된 암호와 비교할 필요가있다. – Barry

+0

나는 혼란스러워하므로 암호를 해시하는 방법을 잘못 이해했다고 생각합니다. 아래 기존 답변을 읽어보십시오. 필요한 경우 https://crackstation.net/hashing-security.htm에 좋은 기사가 있습니다. – Algiz

답변

3

소금은 한 번만 생성 된 다음 어딘가에 저장되기 때문에 정확하게 동일한 소금을 만들 필요가 없습니다. 다른 모든 사람들은이 소금을 사용해야합니다. Node.js를 당신이 단지 강

  • 의 한면에 일반적으로 소금을 만들
    • 때문에 괜찮 다른 소금 생성 (즉 Math.random())를 가지고 그렇다면 당신은 양쪽에 다른 하나를 만드는 경우

    는 당신이 필요로하는 메커니즘를 해싱 같은 입니다 어쨌든 그것을 사용하고있다! 이것은 서로 호환되는 Java 및 node.js (즉, md5 또는 sha3)의 다양한 해싱 알고리즘에 대한 구현이 많기 때문에 쉽습니다.

  • 2

    문제는 nodejs에 있습니다. java에서 생성 된 것과 같은 정확한 소금을 생성 할 모듈/라이브러리를 찾을 수 없습니다.

    서로 다른 시간에 정확하게 동일한 염을 생성 할 수있는 방법을 찾으면 최상의 소금은 가능한 한 무작위 적이기 때문에 염분의 목적을 이길 수 있습니다. 당신이해야 할 일은 자바가 그것을 처리 한 데이터베이스에서 소금을 가져오고 가져온 소금을 사용하여 해싱을 수행하는 것입니다.