해싱 할 때 crypt() 알고리즘이 어떤 알고리즘을 사용하는지 잘 모르겠습니다. 나는 PHP 매뉴얼을 보았지만 사용할 수있는 것이 무엇이든 사용한다고 말한다. 그러나 어떤 것을 사용하는지 어떻게 알 수 있습니까? 하나를 사용한다면 사용 방법을 알려주는 방법은 무엇입니까? 나는 현재 나의 개발 환경으로서 MAMP를 사용하고 있지만, PHP에서 성명서를 찾을 수있는 방법이 있어야한다고 생각한다.컴퓨터에서 crypt() 알고리즘을 사용하는 방법을 찾는 방법은 무엇입니까?
답변
알고리즘을 소금 문자열의 일부로 지정합니다. 예를 들어 $2a$
으로 시작하면 Blowfish 사이퍼가 생깁니다. 사용하려는 알고리즘을 지원하지 않으면 의미있는 결과를 얻을 수 없습니다. CRYPT_BLOWFISH
과 같은 사전 정의 된 상수 중 일부를 검사하여 어떤 알고리즘이 지원되는지 미리 알아 내려고 할 수 있습니다. 단, 적어도 PHP 5.2에서는 CRYPT_SHA256
및 CRYPT_SHA512
상수가 항상 정의되지는 않습니다. PHP 5.3부터는 PHP가 자체적으로 알고리즘을 구현했기 때문에 PHP 5.2 이전 버전과 마찬가지로 PHP 컴파일시 시스템에서 사용할 수있는 것은 중요하지 않습니다. PHP 5.2를위한 Suhosin 패치는 Blowfish를 적어도 추가했지만 PHP 5.3에서 사용 된 것과 호환되지 않는 것으로 보입니다. - 두 문자 salt 알파벳에서 "와 표준 DES 기반의 해시
- CRYPT_STD_DES을 :
PHP docs for the
crypt()
function가 사용할 알고리즘을 지정 소금 문자열을 사용하는 방법에 대한 몇 가지 정보를 제공 할./0-9A-Za-z "라고합니다. 소금에 유효하지 않은 문자를 사용하면 crypt()가 실패합니다.- CRYPT_EXT_DES - 확장 DES 기반 해시입니다. "salt"는 밑줄로 구성된 의 9 바이트 문자열로 4 바이트의 반복 횟수와 4 바이트의 소금이 이어집니다. 이들은 인쇄 가능한 문자로 인코딩 된 입니다. 문자 당 6 비트, 최소 유효 문자가 먼저 나와야합니다. 0에서 63까지의 값은 "./0-9A-Za-z"로 인코딩됩니다. 소금에 유효하지 않은 문자를 사용하면 crypt() 이 실패합니다. 열두 문자 $ 1 $
- CRYPT_BLOWFISH로 시작 염 로 해싱 MD5 - -
- CRYPT_MD5 로서의 소금 복어 해시는 다음과 같다 : "$ 2A 호 $", 두 자리 선정 된 파라미터, "$", 22 자리 알파벳 "./0-9A-Za-z". 에서이 범위 밖의 문자를 사용하면 crypt()가 길이가 0 인 문자열을 반환합니다. 두 개의 자릿수 비용 매개 변수는 기본 Blowfish 기반 해싱 알고리즘에 대한 반복 수 의 기본 2 로그이며 범위 04-31에 있어야합니다.이 범위를 벗어나는 값은 crypt()를 실패하게 만듭니다.
- CRYPT_SHA256 - 접두어가 이고 $ 5 $ 인 16 자로 된 SHA-256 해시입니다. salt 문자열이 'rounds = $'로 시작하면 값 N은 해시 루프가 일 수있는 횟수를 나타내는 데 사용됩니다. 이는 Blowfish의 비용 매개 변수와 매우 비슷합니다. 라운드 수는 5000이며, 최소값은 1000이고 최대 값은 99999999입니다. 이 범위를 벗어나는 N을 선택하면 이 가장 가까운 한계로 잘립니다.
- CRYPT_SHA512 - $ 6 $가 접두사 인 문자 소금이 16 개인 SHA-512 해시. 소금 문자열이 'rounds = $'로 시작하면 N의 숫자 값은 Blowfish의 매개 변수와 같이 해시 루프를 수행해야하는 횟수를 나타내는 데 사용됩니다 ( ).기본 라운드 수는 5000이고 최소값은 이고 최대 값은 999,999,999입니다. 이 범위를 벗어나는 N 의 선택은 가장 가까운 한계로 잘립니다. 그래서
는 XA86
로 시작하는 문자열이 소금입니다 당신이
crypt('password', '$2a$10$XA86t7EJ0xD9OYEUbnTulT');
을 사용할 수 있습니다, 당신은 2^10의 반복으로 복어를 사용하여 해시 문자열 "암호"를 지정할 수 있습니다.
마지막으로 더 많은 예제가 필요하거나이 암호 호환성 비즈니스를 처리하기 위해 뭔가를 원한다면 phpass을 살펴보십시오. 그것은 공개 도메인이며 내 경험에 멋지게 작동합니다. 여러 시스템과 호환되는 해시를 원한다고 지정하지 않는 한 자동으로 시스템에서 "최적의"알고리즘을 사용합니다 (MD5를 사용하는 경우).
- 1. 문자열의 해시 알고리즘을 찾는 방법은 무엇입니까?
- 2. 특정 컴퓨터에서 가수를 찾는 방법은 무엇입니까?
- 3. 파생 알고리즘을 찾는 알고리즘
- 4. 파일에서 줄 바꿈 문자를 사용하는 방법을 찾는 안정적인 방법은 무엇입니까?
- 5. JUNG에서 PageRank 알고리즘을 사용하는 방법은 무엇입니까?
- 6. Windows 컴퓨터에서 perl을 사용하여 디스크 공간을 찾는 방법은 무엇입니까?
- 7. JApplet에서 이미지를 클릭하는 방법을 찾는 방법은 무엇입니까?
- 8. php async crypt
- 9. 사이클 찾기 알고리즘을 사용하여 오일러 경로를 찾는 방법은 무엇입니까?
- 10. 프림 알고리즘을 사용하여 최대 스패닝 트리를 찾는 방법은 무엇입니까?
- 11. 프로토 타입을 사용하는 위치를 찾는 방법은 무엇입니까?
- 12. clang에서 llvm- * 명령을 사용하는 방법을 찾는 방법
- 13. 연결 풀에서 연결을 사용하는 방법을 찾는 방법
- 14. maven이 로컬 컴퓨터에서 jar 파일을 찾는 방법은 무엇입니까?
- 15. 암호화 알고리즘을 테스트하는 방법은 무엇입니까?
- 16. opencv가 등고선을 찾는 데 사용하는 알고리즘은 무엇입니까?
- 17. 일부 컴퓨터에서 .NET 원격 메모리 누수를 찾는 방법은 무엇입니까?
- 18. 내 컴퓨터에서 생성 된 최신 COM 포트를 찾는 방법은 무엇입니까?
- 19. 내 컴퓨터에서 C로 설치된 드라이버의 이름을 찾는 방법은 무엇입니까?
- 20. '유사한 이미지'를 찾는 데 Chamfer Matching 알고리즘을 사용하는 방법
- 21. OpenCV에서 사용할 수있는 결로 알고리즘을 사용하는 방법은 무엇입니까?
- 22. Windows exe가 사용하는 라이브러리를 찾는 방법은 무엇입니까?
- 23. 루비 객체가 사용하는 메모리를 찾는 방법은 무엇입니까?
- 24. 사람이 사용하는 호출기를 찾는 방법은 무엇입니까?
- 25. rhohub를 사용하는 루비의 버전을 찾는 방법은 무엇입니까?
- 26. PHP에서이 알고리즘을 코딩하는 방법은 무엇입니까?
- 27. PHP에서는 hash() 대신 암호 해시에 crypt()를 사용하는 이유는 무엇입니까?
- 28. 셀레늄 유형 방법을 사용하는 방법은 무엇입니까?
- 29. var_dump 기능을 사용하는 방법을 아는 방법은 무엇입니까?
- 30. 목표 알고리즘을 사용하여 차 알고리즘을 구현하는 방법은 무엇입니까?
어떤 소금 형식을 사용하고 있습니까? – CodesInChaos
소금을 제공하면 그것이 무엇을 요구하고 있습니다. – Andy
제가 올바르게 기억하고 있다면 소금의 형식에 따라 알고리즘 체크가 결정됩니다. http://php.net/manual/en/function.crypt.php – CodesInChaos