질문/조언질답게시판

왜 안될까요?

C# 프로그램제작하는데 관련모듈깔고 라이믹스디비에서 비밀번호 불러온다음

검증하니까 다르다네용. 라이믹스 코어에서 쓰는 BCrypt 암호화가 일반적인 BCrypt 랑 다른가요?

  • profile

    bcrypt는 어떤 언어라도 똑같습니다. $2a$, $2x$ 또는 $2y$로 시작하고, 정확히 60자입니다.

     

    라이믹스 DB에 저장되어 있는 회원 비번이 모두 bcrypt라는 법은 없습니다. XE에서 과거에 md5나 pbkdf2로 저장한 비번도 라이믹스에서는 자동으로 인식하니까요. 직접 DB를 열어보고 확인해 보시기 바랍니다.

     

    비교하려는 비번이 어떤 문자셋으로 인코딩되어 있는지도 확인해볼 필요가 있겠습니다. 라이믹스에서는 UTF-8이 표준인데, 윈도우용 프로그램과 연동하다 보면 UTF-16이 종종 눈에 띄더군요.

  • profile
    단순히 "안된다"고 올리시는 것보다는 어떻게 비교하신건지 올려주시는게 답변에는 더 도움이 됩니다.
  • profile profile

    라이믹스서버 Db에서 rx_member 패스워드 긁어온 뒤에
    BCrypt.Net.BCrypt.Verify(프로그램에서 입력한 패스워드 평문, Db에서 읽어온값); 이런식으로 검증했어요.

  • profile profile
    라이믹스에서는 각 암호화된 방식을구분하기위해 앞부분에 평문으로 비교하는 문구가 적힌경우도 있습니다.
  • profile

    그냥 설치했던 C#의 BCrypt 누겟패키지가 $2y 암호화를 지원하지 않아서
    생기는 문제라 신버전으로 다시깔았떠니 해결되었네요 ㅎㅎ ㅠ 에구

  • profile profile
    헐... $2y$ 나온 지 10년은 된 것 같은데요. C#도 오래된 버전 문제가 만만치 않군요. ㅠ