시간의 인터페이스 시험 과정에서 반환 된 인터페이스 콘텐츠 암호화 중 일부는 텍스트의 큰 부분이다. 이 경우, 다시 암호화 된 데이터의 사진이있을 수있다, 당신은보기를 저장된 이미지에 이러한 데이터를 변환해야합니다.
예를 들면 :
";, 64 기수를 이미지 / JPEG 데이터"단어를 여기, 우리는 해당 키가 컨텐츠의 시작을 볼 수 있습니다. 우리는 단순히 이것은 JPEG 형식의 사진, 그리고 base64로 인코딩 있다고 생각합니다.
JPath, 우리는 콘텐츠에 대한 직접적인 수익을 촬영 한 다음 전면 제거 할 수 있습니다 "데이터 : 이미지 / JPEG를, 64 기수를,"그것은 데이터의 실제 수익입니다.
//이 json으로 취득한 컨텐츠 데이터를 반환
문자열 콘텐츠 = JSONPath.read (JSON, "$의 .content" )로 .toString ());
// 전면 제거 "데이터 : 이미지 / JPEG, Base64로를 ," 단어 문자열 imgdata = content.replace ( "데이터 : 이미지 / JPEG, Base64로", "" ) // Base64로 디코딩 Base64Decoder 디코더 = 새로운 새 Base64Decoder을 () 의 바이트 [] = 데이터 decoder.decodeBuffer (imgdata는) 을 위해 ( int로 = 0 I를, I는 <data.length입니다; I는 ++ ) { IF (데이터 [I] <0 ) { 데이터 [I]가 + = 256 ; } }
JPEG 파일로 저장 쓰기 // FileOutputStream 또는이 FOS = 새로운 새의 FileOutputStream ( "D : \\ test.jpg를" ); fos.write (데이터); fos.flush (); fos.close ();
물론, 인코딩 플러스 디코딩이있을 것이다. 우리가 64 기수로 인코딩 된 그림 파일을 추가하려면 다음 코드를 참조 할 수 있습니다 :
공용 정적 스트링 getImageStr (문자열 imgFile) { 의 InputStream inputStream을 = 널 ; 바이트 [] 데이터 = 널 ; 시도 { inputStream을 = 새로운 FileInputStream에 (imgFile); 데이터 = 새로운 바이트 [inputStream.available ()]; inputStream.read (데이터); inputStream.close (); } 캐치 (IOException이 전자) { e.printStackTrace (); } // 加编码 BASE64Encoder 인코더 = 새로운 BASE64Encoder (); 반환 encoder.encode (데이터); }
이것은 당신이 문자열을 base64 인코딩으로 이미지를 변환 할 수 있습니다.
위의 코드의 직접 사용은 성공하지 말아야 경우 . 그 이유는 암호화 및 암호 해독의 사용은 sun.misc 패킷 sun.misc.BASE64Encoder / BASE64Decoder 클래스에서 Base64로와 Base64Decoder BASE64Encoder을 점이다.
이 클래스는 내부 태양의 방법 및 자바 API, 보이지 JDK의 표준 라이브러리에없는 공개하지만 JDK의 클래스를 포함, 직접 사용할 수 있습니다. 그러나 직접 이클립스,하지만 당신은 클래스를 찾을 수 없습니다. 다음과 같은 솔루션은 다음과 같습니다 :
1. 마우스 오른쪽 프로젝트 - 빌드 경로를 구성 - "빌드 경로"
선택 라이브러리는 정의 된 규칙이 표시되지 않습니다, 규칙이 이전에 정의되어 있지 않은 경우, 액세스 규칙을 선택하고 JRE 시스템 라이브러리를 클릭
2. 액세스 규칙 편집을 클릭 - "추가 한 다음 확인을 클릭합니다
3. ** 선택 규칙, 해상도에 패턴을 드롭 다운 목록 상자를 액세스 선택한 다음 확인을 클릭
이 작업 후, 우리는 성공적으로 Base64로 관련 클래스를 사용할 수 있습니다.