2014-09-19 6 views
1

java에서 문자열을 인코딩 한 다음 모든 모바일 플랫폼에서 디코딩합니다. Base64/AES를 사용하지만 모두 플랫폼마다 구현이 다르므로 문자열을 인코딩하면 모든 모바일 플랫폼 (Android, IOS, Windows, Mozilla, BlackBerry, J2ME 전화)에서 어떻게 디코딩됩니까모든 플랫폼에 대한 인코딩 및 디코딩

+0

Base64 및 AES가 표준화되어 있습니다. 작은 구현의 차이점이 있더라도 이것이 상호 운용성을 전혀 배제해서는 안됩니다. 상호 운용성 문제에 대한 구체적인 예가 있습니까? – deceze

답변

1

의견에서 언급했듯이 Base64와 AES는 모든 플랫폼이 호환 가능한 구현을 갖도록 충분히 표준화되었습니다.

당신은 몇 가지를 확인해야 : 바이트 (또는 그 반대)로 문자열을 변환 할 때

  • 항상 동일한 문자 인코딩을 사용합니다.

  • 모든 플랫폼에서 동일한 AES 작동 모드 (예 : CBC 모드)와 동일한 패딩을 사용합니다 (예 : PKCS # 7 [Java에서 PKCS # 5]). 선택을 명시 적으로 명시 할 수있는 옵션이있는 경우 기본값에 의존하지 마십시오.

  • IV가 필요한 모드를 사용하는 경우이 신호가 대상으로 올바르게 전달되는지 확인하십시오. 모범 사례로 각 메시지마다 임의의 IV를 사용하십시오.

  • 동일한 키를 사용하십시오. 어리석은 것처럼 들릴지 모르지만 암호에서 키를 파생하는 경우 모든 플랫폼에서 동일한 메커니즘을 사용해야합니다. PBKDF2는 암호 기반 키에 적합한 선택이며 동일한 해시 함수와 반복 횟수를 사용해야합니다. 고정 키를 사용하는 경우 문자열 표현을 키 바이트로 일관성있게 변환해야합니다.