Android 데이터 암호 화의 Base 64 인 코딩 알고리즘 의 간단 한 실현

앞에서 공 부 를 통 해 평소에 개발 하면 서 만난 각종 데이터 암호 화 방식 을 정리 한 결과 암호 화 된 바 이 너 리 데 이 터 를 Base 64 로 인 코딩 하여 2 차 암호 화 효 과 를 얻 었 습 니 다.사실은 Base 64 는 엄격 한 의미 에서 볼 때 암호 화 알고리즘 이 아니 라 인 코딩 알고리즘 입 니 다.왜 Base 64 인 코딩 을 사용 합 니까?그것 은 어떤 문 제 를 해 결 했 습 니까?이것 도 본문 에서 탐구 한 것 입 니까?
무슨 Base 64 알고리즘 이 요?
Base 64 는 네트워크 에서 가장 흔히 볼 수 있 는 8Bit 바이트 코드 를 전송 하 는 인 코딩 방식 중 하나 로 Base 64 는 안전 분야 의 암호 화 알고리즘 이 아니 라 사실 Base 64 는 하나의 인 코딩 알고리즘 이 라 고 할 수 있 으 며 데이터 내용 을 인 코딩 하여 전송 하기에 적합 하 다.표준 Base 64 인 코딩 디 코딩 은 추가 정보 없 이 완전히 역 동적 입 니 다.사용자 정의 문자 집합 이 Base 64 인 코딩 방식 으로 데이터 암호 화 에 사용 되 더 라 도 대부분의 장면 에서 쉽게 해 제 됩 니 다.Base 64 인 코딩 은 본질 적 으로 바 이 너 리 데 이 터 를 텍스트 데이터 로 바 꾸 는 방안 입 니 다.비 이 진 데이터 에 대해 서 는 먼저 이 진 형식 으로 변환 한 다음 에 6 비트(2 의 6 차방=64)연속 으로 10 진 값 을 계산 하고 이 값 에 따라 A-Z,a-z,0-9,+,/이 64 글자 에서 해당 하 는 문 자 를 찾 아 텍스트 문자열 을 얻 습 니 다.기본 규칙 은 다음 과 같다.
표준 Base 64 는 64 글자(영문 대소 문자,숫자 와+,/)만 있 고 접미사 등호 로 사 용 됩 니 다.Base 64 는 3 개의 바이트 를 4 개의 인쇄 가능 한 문자 로 바 꾸 기 때문에 Base 64 인 코딩 된 문자열 은 반드시 4 로 나 눌 수 있 습 니 다(접미사 로 사용 되 는 등호 가 아 닙 니 다).등 호 는 반드시 접미사 로 사용 되 며,숫자 는 반드시 0 개,1 개 또는 2 개 이다.원문 길이 가 3 으로 나 누 어 지지 않 으 면 Base 64 는 뒤에\0 을 추가 하여 3n 자 리 를 맞 춰 야 하기 때문이다.정확하게 복원 하기 위해 서 몇 개의 등 호 를 추가 하 였 다.분명히 등 호 를 추가 하 는 수 는 0,1 또는 2 에 불과 하 다.엄 밀 히 말 하면 Base 64 는 암호 화 라 고 할 수 없고 인 코딩 변환 이 라 고 할 수 밖 에 없다.
아래 그림 은 Base 64 인 코딩 표 입 니 다.

Base 64 인 코딩 의 용도?
컴퓨터 에 있 는 모든 데 이 터 는 ascii 코드 에 따라 저장 되 며,ascii 코드 의 128~255 사이 의 값 은 보이 지 않 는 문자 입 니 다.한편,네트워크 에서 데 이 터 를 교환 할 때 예 를 들 어 A 지 에서 B 지 로 전송 할 때 여러 개의 경로 장 치 를 거 쳐 야 한다.서로 다른 장치 가 문자 에 대한 처리 방식 이 다 르 기 때문에 보이 지 않 는 문자 들 은 처리 오류 가 발생 할 수 있 고 전송 에 불리 하 다.그래서 먼저 데 이 터 를 Base 64 인 코딩 으로 만 들 고 모두 보 이 는 문자 로 바 꾸 면 오류 가 발생 할 가능성 이 크게 떨어진다.
Base 64 구체 적 실현
1.)문자열 Base 64 인 코딩

String encodedString = Base64.encodeToString("whoislcj".getBytes(), Base64.DEFAULT);
 Log.e("Base64", "Base64---->" + encodedString);
2.)문자열 Base 64 디 코딩

 String decodedString =new String(Base64.decode(encodedString,Base64.DEFAULT));
 Log.e("Base64", "Base64---->" + decodedString);
3.)파일 을 Base 64 인 코딩

File file = new File("/storage/emulated/0/pimsecure_debug.txt");
FileInputStream inputFile = null;
try {
  inputFile = new FileInputStream(file);
  byte[] buffer = new byte[(int) file.length()];
  inputFile.read(buffer);
  inputFile.close();
  encodedString = Base64.encodeToString(buffer, Base64.DEFAULT);
  Log.e("Base64", "Base64---->" + encodedString);
} catch (Exception e) {
  e.printStackTrace();
}
4.)파일 을 Base 64 디 코딩

File desFile = new File("/storage/emulated/0/pimsecure_debug_1.txt");
FileOutputStream fos = null;
try {
  byte[] decodeBytes = Base64.decode(encodedString.getBytes(), Base64.DEFAULT);
  fos = new FileOutputStream(desFile);
  fos.write(decodeBytes);
  fos.close();
} catch (Exception e) {
  e.printStackTrace();
}
5.Base64.DEPAULT 매개 변수 에 대한 설명
인 코딩 이 든 디 코딩 이 든 하나의 매개 변수 가 있 습 니 다.Flags,Android 는 다음 과 같은 몇 가 지 를 제공 합 니 다.
DEFAULT 이 인 자 는 기본 값 입 니 다.기본 적 인 방법 으로 암호 화 합 니 다.
NO_PADDING 이 인 자 는 암호 화 문자열 의 마지막"="을 생략 합 니 다.
NO_WRAP 이 매개 변 수 는 모든 줄 바 꿈 자 를 생략 한 다 는 뜻 입 니 다.(설정 후 CRLF 는 소 용이 없습니다.)
CRLF 라 는 매개 변 수 는 낯 이 익 은 것 같 습 니 다.이것 이 바로 Win 스타일 의 줄 바 꿈 문자 입 니 다.즉,CR LF 라 는 쌍 을 유 닉 스 스타일 의 LF 가 아 닌 한 줄 의 끝 으로 사용 한 다 는 뜻 입 니 다.
URL_SAFE 라 는 매개 변 수 는 암호 화 할 때 URL 과 파일 이름 에 특별한 의 미 를 가 진 문 자 를 암호 화 문자 로 사용 하지 않 는 다 는 뜻 입 니 다.구체 적 으로 는-과 입 니 다.대체+와/
요약:
Base 64 인 코딩 은 간단 해 보이 지만 실제 개발 에 서 는 상당히 광범 위 하 게 사용 된다.현재 프로젝트 에 이렇게 많이 쓰 일 뿐 이 고 앞으로 더 복잡 한 상황 을 사용 할 때 보충 하 겠 습 니 다.
이상 은 여러분 에 게 가 져 온 안 드 로 이 드 데이터 암호 화의 Base 64 인 코딩 알고리즘 의 간단 한 실현 모든 내용 입 니 다.많은 응원 부 탁 드 리 겠 습 니 다~

좋은 웹페이지 즐겨찾기