암호화 된 암호를 json과 쿼리 문자열을 통해 전달합니다. 예를 들어 패스워드는 다음과 같습니다 : V0VuDF9ITK+A744HD=
JSON을 통해 비 숫자/문자로 문자열 전달
json을 통해 문자열을 전달하면 JSON.stringify
을 사용하여 문자열을 문자열 화하여 서버에서 사용할 수 있습니다. 내가 서버에서 암호를 사용하려고하면 새 암호는 V0VuDF9ITK A744HD=
(중간에 공간을 알)을 할 수 있도록
var request = sb.serverRequest('changePassword', JSON.stringify({username: username, password: credentialsInput.value, original: password}));
request.done(function() {
var response = JSON.parse(request.responseText);
if(response.success) {
console.log('password changed');
} else {
setInstructions('That didn\'t work. Please try again.');
}
credentialsInput.value = ''; //Clear input
});
그러나, 그것은 공백으로
+
을 교체했다? Java에서 문자열을 미리 구문 분석하여 통과 한 실제 문자열에 아닌 문자와 숫자를 포함 할 수 있습니까? 자바 스크립트에 문자열을 전달하는 것처럼 보이지만 가능한 경우 java에서 전처리하는 것을 선호합니다. 왜냐하면 querystring을 통해 문자열을 전달할 수도 있기 때문입니다.
Java에서 base64 인코더를 사용하여 암호화하므로 자바 스크립트에서 이스케이프 문자를 사용할 때 고려해야 할 다른 가능성이 있는지 확실하지 않습니다. =
이 잘 전달 된 것 같습니다. 이 인코딩 유형에서 문제가 될 수있는 다른 문자가 있습니까?
P. 나는 실제로 서버에서 처리되는 자바 스크립트에서 암호화를 수행하지 않지만 서버 측과 비교할 필요가 있기 때문에 자바 스크립트에서 암호화 된 암호가 필요한이 특정 인스턴스에서 ... 나는 지루한 세부. 나는이 암호화된 암호를 querystring을 통해 전달할 것이며 +
또는 =
에 의해 오류가 있다고 가정합니다. 쿼리 스트링 (querystring)에서도 이와 비슷한 문자열을 어떻게 전달할 수 있습니까?
업데이트 : 암호를 암호화하는 데 사용하는 인코딩 방법은 다음과 같습니다. 나는 그것이 base64 일 뿐이라고 착각했을지도 모른다. 이 방법이 암호를 안전하게 보호 할 수 있습니까?
public static synchronized String encrypt(String plainText) throws RuntimeException {
MessageDigest md = null;
try{
md = MessageDigest.getInstance("SHA");
}catch(NoSuchAlgorithmException e){
throw new RuntimeException(e.getMessage());
}
try{
md.update(plainText.getBytes("UTF-8"));
}catch(UnsupportedEncodingException e){
throw new RuntimeException(e.getMessage());
}
byte raw[] = md.digest();
String hash = (new BASE64Encoder().encode(raw));
return hash;
}
Base64 인코딩은 암호화되지 않습니다 사용합니다. 이것은 일반 텍스트 암호를 전송하는 것보다 안전하지 않습니다. –
대신 무엇을 사용해야합니까? – ryandlf
HTTPS를 사용하여 – Malvolio