> Java > java지도 시간 > 본문

바이트 배열을 문자열로 변환했다가 다시 되돌리면 암호 해독 중에 데이터가 손실되는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-18 02:36:02
원래의
948명이 탐색했습니다.

Why Does Converting a Byte Array to a String and Back Result in Data Loss During Decryption?

바이트 배열을 문자열로 변환하고 재변환할 때의 어려움

질문:

왜 문자열을 바이트 배열에서 다시 변환한 후 얻은 바이트 배열이 원래 바이트와 다릅니다. 배열로 인해 암호 해독 오류가 발생합니까?

해결책:

암호화된 데이터를 문자열로 인코딩하는 것은 문자열 인코딩의 특성으로 인해 문제가 될 수 있습니다. 바이너리 데이터의 경우 바이트 배열을 사용하는 것이 좋습니다. 그러나 문자열 저장이 필요한 경우 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿