이 글에서는 주로 PHP 사용자 비밀번호 암호화 알고리즘을 소개하고, Discuz 암호화 알고리즘의 원리를 보다 자세히 분석하며, .net 알고리즘의 구현 방법을 예제와 비교하여 PHP에서 사용자 암호화의 프로세스와 구현 방법을 요약합니다. 필요한 것은 친구들이 참고하면 됩니다
오늘 Discuz를 2차 개발용으로 사용하다가 코드에서 Discuz 사용자 이름과 비밀번호를 확인해야 했는데, 그러다가 Discuz 포럼에 두 개가 있어서 실수로 함정에 빠졌습니다. 사용자 데이터를 저장하는 테이블 중 하나는 Discuz 데이터베이스 ultrax의 pre_common_member에 있고, 다른 하나는 UCenter 데이터베이스 ucenter의 uc_members 테이블에 저장되어 있습니다. ultrax 라이브러리에 있는 pre_common_member 데이터와 그 비밀번호가 어떻게 생성되는지 연구하는 데 많은 시간을 보냈습니다. 그 결과, 무작위로 생성된 솔트를 인터넷에서 검색해서 발견했습니다
이 무작위로 생성된 솔트를 어떻게 사용할 수 있는지 궁금합니다. . 로그인 시 인증은 어떻게 되나요? 그런데 온라인에서 Discuz는 실제로 해당 비밀번호를 전혀 사용하지 않는다고 하더군요. 직접 테스트해본 결과, pre_common_member에서 사용자 비밀번호를 변경해도 여전히 정상적으로 로그인이 되는 것 같았습니다. 그로 인해 나는 큰 우회로를 겪게 되었습니다.
자, 요점을 말하자면 Discuz의 비밀번호 암호화 알고리즘은 실제로 2개의 MD5 암호화입니다. 먼저 일반 텍스트로 한 번 암호화한 다음 무작위로 솔트를 생성한 다음 첫 번째 암호 텍스트 뒤에 솔트를 일반 텍스트로 추가하고 MD5를 다시 수행합니다. 암호화. 솔트는 uc_members 테이블에 저장되며 사용자 이름으로 얻을 수 있습니다.
이렇게:
MD5(MD5(일반 텍스트) + 솔트)
다음은 .net의 구현 코드입니다:
string GetDiscuzPWString(string sourceStr, string salt) { return GetMd5Hash(string.Concat(GetMd5Hash(sourceStr),salt)); } string GetMd5Hash(string input) { MD5 md5Hasher = MD5.Create(); byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return sBuilder.ToString(); }
비밀번호 판단 방법 요약:
① UC
를 설치하려면 ② 데이터베이스를 열고 uc_members 테이블을 찾아 마지막 필드 "salt"를 찾은 후 내부 값을 복사하세요.
3 의사 코드:
$s=md5(md5("密码")."salt字段的值"); echo $s;
4 IF를 사용하여 판단
⑤ 다시 말해보세요! 그 난수는 6자리입니다!
요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
PHP 메모리 캐싱 기능 memcached의 자세한 그림 및 텍스트 설명 memcached
위 내용은 PHP 사용자 비밀번호 암호화 알고리즘 예시 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi

phpisusedforendingemailsduetoitsbuitsbuitsbuit-inmail () functionandsupportivelibraries lifephpmailerandswiftmailer.1) usethemail () functionforbasicemails, butithaslimitations.2) EmployPhpmailerforAdvancedFeatirehtMailsAndAtachments.3))

PHP 성능 병목 현상은 다음 단계를 통해 해결할 수 있습니다. 1) 성능 분석을 위해 Xdebug 또는 Blackfire를 사용하여 문제를 찾으십시오. 2) 데이터베이스 쿼리 최적화 및 APCU와 같은 캐시 사용; 3) Array_Filter와 같은 효율적인 기능을 사용하여 배열 작업을 최적화합니다. 4) 바이트 코드 캐시에 대한 OpCache 구성; 5) HTTP 요청을 줄이고 사진 최적화와 같은 프론트 엔드 최적화; 6) 지속적으로 모니터링하고 성능을 최적화합니다. 이러한 방법을 통해 PHP 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

종속성 주사 (di) inphpisadesignpattern thatmanages 및 enpleducesclassdelencies, 향상 codemodularity, trestability 및 maintainability .itallowspassingDepporsingDikedAbaseConnectionStoclassesAssparameters, 촉진 이용성.

cachingimprovesphpperferferfermanceStoringResultsOfcomputationSorqueriesforquickRetrieval, retingServerloadandenhancancing responsetimestimes : 1) opcodecaching, opcodecaching, whitescompiledphps scriptsinmorytoskipcompileation; 2) dataCachingUsingmemmc


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.