내 앱과 백엔드간에 암호화 된 데이터를 전송하기 위해 SHA512 해시를 사용하고 있습니다. 그러나 나는 이상한 상황을 겪고 있으며 그 원인을 알 수 없습니다.SHA512 해시는 안드로이드, PHP 및 자바 스크립트가 다릅니다
그래서, 내가있어 다음과 같은 설정 테스트 :
안드로이드 배 SHA512
을안드로이드 1X SHA512 -> CryptoJS 1 배 SHA512
PHP 배 SHA512
그래서, 내가 할 때 처음 2 배 안드로이드 해싱, 나는 1x android -> 1x cryptojs 할 때와 같은 결과를 얻는다. 그러나 PHP 2x를 실행하면 첫 번째 Android 패스를 사용하는 것과 같은 결과를 얻지 만 PHP의 두 번째 암호화 패스는 다릅니다.
PHP에서 해시() 및 openssl_digest() 함수를 원시 바이트로 출력하려고 시도했습니다.
PHP :
$firstpass = base64_encode(hash('sha512', $enteredPassword, true));
//$firstpass = base64_encode(hash('sha512', $enteredPassword, true));
//$secondpass = base64_encode(openssl_digest($firstpass, 'sha512', true));
$secondpass = base64_encode(hash('sha512', $firstpass, true));
안드로이드 :
public static String encryptPassword(String password) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-512");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
if (md != null) {
md.update(password.getBytes());
byte byteData[] = md.digest();
String base64 = Base64.encodeToString(byteData, Base64.DEFAULT);
return base64;
}
return password;
}
CryptoJS :
var password = cryptojs.SHA512(req.params.password);
var basepassword = password.toString(cryptojs.enc.Base64);
왜 내 첫 번째 해시 정확하고 나의 두번째하지 나는이 문제를 어떻게 해결할 수있는 것인가?
나는 이들을 일치시킬 수없는 이유를 알아 내려고 노력하고 있지만 BCrypt도 점검 할 것입니다. 2 배 안드로이드와 안드로이드 -> CryptoJS는 base64 문자열에 줄 바꿈이 있음을 알았지 만 PHP 버전은 base64에 개행 문자가 없었습니다. S – Myth1c
그렇다면 인코딩과 너무 멀리 떨어져 있지 않았습니다.) – meredrica
그래,하지만 나는 PHP가 왜 개행 문자를 가지지 않는지 아직 모른다. ( – Myth1c