문제

내 사이트를 Oscommerce 상점에서 상업용 응용 프로그램으로 옮기고 있습니다.

새로운 응용 프로그램은 직선 MD5 암호화를 사용하여 암호를 저장합니다. OsCommerce는 MD5를 사용하여 암호를 저장하지만 해시에 임의의 2 자리 숫자 (일반 텍스트로 제공)를 추가합니다.

누군가가 포럼에 게시 한 내용은 다음과 같습니다.

추가 된 두 문자는
해시 = md5 (TwocharactersplainPassword)
IE : 2 레터 : 74
일반 비밀번호 : 통과
HASH = MD5 ( '74PASS') = ACAA6E689AE0008285320E6617CA8E95 : 74


Oscommerce가 암호를 암호화하는 방법은 다음과 같습니다.

// This function makes a new password from a plaintext password.
function tep_encrypt_password($plain) {
  $password = '';

  for ($i=0; $i<10; $i++) {
    $password .= tep_rand();
  }

  $salt = substr(md5($password), 0, 2);
  $password = md5($salt . $plain) . ':' . $salt;

  return $password;
}

// This funstion validates a plain text password with an encrypted password
function tep_validate_password($plain, $encrypted) {
  if (tep_not_null($plain) && tep_not_null($encrypted)) {
    // split apart the hash / salt
    $stack = explode(':', $encrypted);

    if (sizeof($stack) != 2) {
      return false;
    }

    if (md5($stack[1] . $plain) == $stack[0]) {
      return true;
    }
  }

  return false;
}

내 새 카트가 암호를 암호화하는 방법은 다음과 같습니다.

if ($admin_password_encrypt == 1) {
    $password_match = md5($password);
} else {
    $password_match = $password;
}

내 Oscommerce 카트에서 새 카트로 고객 비밀번호를 가져 오는 가능한 방법이 있습니까?

도움이 되었습니까?

해결책

데이터베이스에 일반 MD5 해시를 저장하지 마십시오. 일반 MD5 해시는 레인보우 테이블을 사용하여 빠르고 쉽게 리버스 엔지니어링 할 수 있습니다. 그러나 향후 비밀번호를 저장하는 방법에 관계없이 문제를 해결하는 방법은 다음과 같습니다.

  1. 새 데이터베이스에서 암호의 "버전"을 지정하는 열을 만듭니다. 이것은 기존 응용 프로그램 또는 새 응용 프로그램에 의해 암호가 생성되었는지 여부를 결정하는 데 사용됩니다.
  2. 기존 사용자를 가져 와서 앞서 언급 한 플래그를 설정하여 암호가 가져옵니다.
  3. 비밀번호를 확인하기위한 두 가지 방법을 만듭니다. 한 방법은 이전 응용 프로그램의 코드를 사용하고 다른 방법은 새 유효성 검사 방법을 사용합니다.
  4. 사용자가 로그인하는 경우 위에서 언급 한 플래그를 확인하고 적절한 유효성 검사 방법을 사용하십시오.

어쨌든, 나는 평범한 MD5 해시가 대부분의 암호에 대해 쉽게 갈라지기 쉽다 (짧고 기억하기 쉬운 암호를 좋아하기 때문에) 소금 및/또는보다 복잡한 알고리즘을 사용합니다. 둘 다 추천하고 두 문자보다 긴 소금을 사용하고 숫자에만 국한되지 않습니다. 이렇게하면 암호가 정말 안전 해집니다.

다른 팁

새 카트에 대한 소스 코드가있는 것 같습니다. "Straight MD5"는 암호를 저장하는 매우 끔찍한 방법이므로 OsCommerce와 동일한 암호 저장 메커니즘을 사용하도록 간단히 변경해야 할 것입니다.

귀하의 질문에 대한 답은 아니오입니다. 비밀번호를 변환 할 방법이 없습니다.

MD5는 해시 알고리즘으로 일방 통행 기능입니다. OsCommerce 시스템에서 해시를 뒤집어 소금과 재사용을 제거 할 수 없습니다. 죄송합니다.

비밀번호가 MD5로 암호화되면 해독 할 수 없습니다. 가장 좋은 가능성은 특정 날짜 이전에 계정/마지막 비밀번호 변경이 발생했는지 여부에 관계없이 로그인 코드를 확인하는 것입니다. 그렇다면 OsCommerce의 비밀번호 유효성 검사 기능을 사용하십시오. 그렇지 않은 경우 직접 사용하십시오.

이런 식으로 모든 새 계정의 경우 비밀번호는 새로운 방법으로 암호화되며 기존 계정의 경우 평소와 같이 계속 처리하므로 사용자에게 투명합니다.

또 다른, 아마도 더 나은 옵션은 OsCommerce의 소금 분석 방법을 계속 사용한다는 것입니다. 더 안전하며 기존 비밀번호를 유지하게됩니다.

해시 알고리즘간에 자동 변환 방법은 없습니다. 불행히도 당신은 다음과 같은 나쁜 옵션 중 하나에서 뽑힐 것입니다.

  1. Old Cart를 구성하거나 프로그램하여 사용자가 이전 시스템에 로그인하여 해시를 새 형식으로 저장합니다.
  2. 비밀번호 크래커를 사용하여 이전 시스템 카트 비밀번호의 일부를 복구하십시오.
  3. 새 공급 업체에게 이전 형식을 지원하도록 요청하십시오
  4. 모든 사용자에게 알림을 보내 새 시스템을 사용할 때 소금 텍스트를 비밀번호로 전제하거나 시스템을 사용자 정의하여 알려진 소금을 선사합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top