PHP로 변환하려고하는 javascript 함수가 있습니다. CryptoJS 라이브러리를 사용합니다 (구체적으로 components/enc-base64-min.js
및 rollups/md5.js
). 그들은 here을 찾을 수 있습니다. 그것에PHP를 사용하여 CryptoJS.enc.Base64와 동일한 결과를 생성합니다.
코드의 비트
// Let's say str = 'hello';
var md5 = CryptoJS.MD5(str);
md5 = md5.toString(CryptoJS.enc.Base64);
// md5 outputs "XUFAKrxLKna5cZ2REBfFkg=="
내가 base64로 인코딩 된 MD5를 사용하여 해싱된다
str
변수 추정, 그래서
$md5 = md5($str);
$md5 = base64_encode($md5);
// md5 outputs "MmZjMGE0MzNiMjg4MDNlNWI5NzkwNzgyZTRkNzdmMjI="
그럼 I 모두 검증 시도 간단한 코드를 시도 출력은 JS 출력이 유효한 Base64 문자열조차도 같지 않습니다.
내가 W3Schools에서 toString()
매개 변수를 찾기 위해 노력 더 이해하기 위해,하지만 매개 변수는 정수 (2, 8, 16)로 가정되는 기준에 따라가, 나에게 의미가 나던, 왜 CryptoJS.enc.Base64
사용입니다 대신에?
내 목표는 JS를 사용하여 유효한 base64 인코딩 된 문자열을 생성하는 것이 아니라 PHP를 사용하여 동일한 출력을 생성하는 것입니다.
는 MD5는 16 바이트의 바이너리를 생산 Base64로로 인코딩 할 산출. Base 64는 각 6 비트를 8 비트 ASCII 문자로 인코딩합니다. 16 * 8/6 = 21.3 바이트이고 Base64는 출력을 4 바이트 배수로 채 웁니다. 이 MD5 출력 base64 인코딩은 첫 번째 예제와 일치하는 24 바이트 출력을 생성합니다. 두 번째 예제는 44 바이트의 출력을 생성하므로 올바르지 않습니다. – zaph
@zaph 정교한 정화를 주셔서 감사합니다 –