더 이상 UTF-8 문자열 데이터가 아니기 때문입니다. 당신은 그것을 암호화했습니다. DES는 읽을 수 없는 바이너리 데이터를 생성합니다. 새 문자열을 UTF-8 인코딩에 따라 강제로 해석하면 직접 읽을 수 있다면 암호화할 이유가 무엇입니까? 수학적 알고리즘을 기반으로 암호화된 대부분의 데이터는 바이너리 블록이나 스트림 데이터를 생성하기 때문입니다. 암호를 해독한 후에만 원본 텍스트를 읽을 수 있습니다. 암호화된 데이터를 텍스트 또는 HTTP 전송으로 저장하려면 BASE64로 데이터를 인코딩하면 됩니다. 인코딩 후에는 문자가 왜곡되지 않은 ASCII 문자열이 됩니다(물론 인간은 여전히 이해할 수 없습니다). .
메모리 바이트 데이터 스트림과 문자열의 차이점을 이해하지 못하기 때문일 수 있습니다. 텍스트 편집기를 사용하여 16진수 표시로 데이터를 본 경우에는 이 질문이 발생하지 않습니다. String 문자열이 표시될 수 있는 이유는 메모리 데이터가 UTF-8 인코딩과 같은 특정 인코딩 규칙을 따르기 때문입니다. 그러나 일반적으로 암호화된 데이터는 완전한 메모리 데이터 스트림이므로 문자열 인코딩 규칙을 따르지 않습니다. 문자열 인코딩 규칙을 강제로 사용하여 구문 분석하면 "깨진 코드"가 됩니다.
더 이상 UTF-8 문자열 데이터가 아니기 때문입니다. 당신은 그것을 암호화했습니다. DES는 읽을 수 없는 바이너리 데이터를 생성합니다. 새 문자열을 UTF-8 인코딩에 따라 강제로 해석하면 직접 읽을 수 있다면 암호화할 이유가 무엇입니까?
수학적 알고리즘을 기반으로 암호화된 대부분의 데이터는 바이너리 블록이나 스트림 데이터를 생성하기 때문입니다. 암호를 해독한 후에만 원본 텍스트를 읽을 수 있습니다.
암호화된 데이터를 텍스트 또는 HTTP 전송으로 저장하려면 BASE64로 데이터를 인코딩하면 됩니다. 인코딩 후에는 문자가 왜곡되지 않은 ASCII 문자열이 됩니다(물론 인간은 여전히 이해할 수 없습니다). .
암호화 후에는 바이트 배열입니다. 모든 바이트 배열을 new String()을 통해 문자열로 변환할 수는 없습니다.
메모리 바이트 데이터 스트림과 문자열의 차이점을 이해하지 못하기 때문일 수 있습니다.
텍스트 편집기를 사용하여 16진수 표시로 데이터를 본 경우에는 이 질문이 발생하지 않습니다.
String 문자열이 표시될 수 있는 이유는 메모리 데이터가 UTF-8 인코딩과 같은 특정 인코딩 규칙을 따르기 때문입니다.
그러나 일반적으로 암호화된 데이터는 완전한 메모리 데이터 스트림이므로 문자열 인코딩 규칙을 따르지 않습니다. 문자열 인코딩 규칙을 강제로 사용하여 구문 분석하면 "깨진 코드"가 됩니다.
그런데 암호화 목적이 올바르지 않으면 사람들이 이해할 수 없잖아요?
그냥 글자가 깨졌네요
암호화 후에는 읽을 수 없습니다.
여기에도 비슷한 글이 있습니다 https://segmentfault.com/q/10...
왜 횡설수설이 아니라고 생각하시나요?
암호화 후에는 일반적으로 바이트 배열이며 16진수 문자열로 변환할 수 있습니다.
암호화 후 Base64를 사용할 수 있습니다.