바이트 배열을 문자열로 변환하고 재변환할 때의 어려움
질문:
왜 문자열을 바이트 배열에서 다시 변환한 후 얻은 바이트 배열이 원래 바이트와 다릅니다. 배열로 인해 암호 해독 오류가 발생합니까?
해결책:
암호화된 데이터를 문자열로 인코딩하는 것은 문자열 인코딩의 특성으로 인해 문제가 될 수 있습니다. 바이너리 데이터의 경우 바이트 배열을 사용하는 것이 좋습니다. 그러나 문자열 저장이 필요한 경우 ISO-8859-1과 같이 바이트와 문자 간의 일대일 매핑이 있는 인코딩을 선택해야 합니다. UTF-16과 같은 인코딩을 사용하면 추가된 바이트 순서 표시와 모호한 문자 매핑 가능성으로 인해 데이터 손실이 발생할 수 있습니다.
다음 예를 고려하세요.
String decoded = new String(encryptedByteArray, "ISO-8859-1"); byte[] encoded = decoded.getBytes("ISO-8859-1");
ISO-8859 사용 -1은 원래 바이트 배열을 보존하여 올바른 암호 해독을 보장합니다.
UTF-16이 실패합니다. to:
위 내용은 바이트 배열을 문자열로 변환했다가 다시 되돌리면 암호 해독 중에 데이터가 손실되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!