안드로이드 암호화된 비밀 키를 안전하게 저장하기 위해 보조 라이브러리를 만들었습니다

예전에 암호화된 비밀 키를 안드로이드로 안전하게 저장라는 글을 썼는데 샘플 코드를 적절하게 썼기 때문에 오래 두었기 때문에 간단하게 프로그램 라이브러리로 만들었다.

Cryptore


https://github.com/KazaKago/Cryptore
What's this?Android Keystore System는 byte 배열을 암호화하는 데 전문적으로 사용되는 간단한 보조 프로그램 라이브러리이다.
Android Keystore System 자체는 암호화 외에도 다양한 용도로 사용되는 보안 키 생성 메커니즘간단하게 문자열로 암호화하고 싶지만 좀 복잡해서 매번 비교 템플릿 코드를 써야 하기 때문에 그 부분을 랩으로 싸는 것이 바로 이 프로그램 라이브러리입니다.
MIT 라이센스 배포 중

Requirement

  • 암호화 방식: RSA
  • Android 4.3(API18) 이후
  • 암호화 방법: AES
  • Android 6.0(API23) 이후
  • Android Framework의 사양에 따라 다릅니다.하드웨어 조건이 충족되는지 확인하십시오.
    자세한 내용은 공식 참조를 보십시오.

    Install


    이용된 모듈의gradle.build에 다음 내용을 추가하십시오
    dependencies {
        compile 'com.kazakago.cryptore:cryptore:{LATEST_VERSION}'
    }
    
    LatestVersion은 →How to use 초기화 Cryptore getCryptore(Context context, String alias) throws Exception { Cryptore.Builder builder = new Cryptore.Builder(alias, CipherAlgorithm.RSA); builder.setContext(context); //API LV22 이하가 필요합니다. // builder.setBlockMode(BlockMode.ECB); //필요에 따라 변경하십시오. // builder.setEncryptionPadding(EncryptionPadding.RSA_PKCS1); //필요에 따라 변경하십시오. return builder.build(); } 위의 샘플은 RSA 암호 모드로 초기화되었습니다. Alias는 Android Keystore System에서 암호화 키를 꺼내는 교환권 역할을 하기 때문에 암호화 해독에 같은 것을 지정하십시오. 또한 필요에 따라 블록 모드와 채우기 모드를 변경하십시오. Android Framework의 사양에 따라 API Lv22 이하에서 사용할 때 Context가 필요합니다. 설정하십시오. 기본값을 지정하지 않은 경우 다음과 같습니다 암호화 방식: RSA 블록 모드: ECB 채우기: PKCS1 Padding 암호화 방법: AES 블록 모드: CBC 채우기: PKCS7 패딩 암호화하다 문자열을 byte 정렬로 변환하면 Cryptore#encrype 메소드에 넣기만 하면 됩니다. 이 견본 다음은 기본 64 인코딩 문자열입니다. String encrypt(String plainStr) throws Exception { byte[] plainByte = plainStr.getBytes(); EncryptResult result = getCryptore().encrypt(plainByte); return Base64.encodeToString(result.getBytes(), Base64.DEFAULT); } AES 암호를 사용할 때는 EnceryptResult를 사용합니다.cipher IV에는 초기 값 벡터가 포함되어 있기 때문에 디코딩할 때 필요하므로 Shared Preferences에 암호화 문자열과 함께 저장하십시오. 비밀 해제 암호화된 문자열의 기본 디코딩을 Cryptore#decrypt 메서드에 전달하십시오. String decrypt(String encryptedStr) throws Exception { byte[] encryptedByte = Base64.decode(encryptedStr, Base64.DEFAULT); DecryptResult result = getCryptore().decrypt(encryptedByte, null); return new String(result.getBytes()); } AES 암호를 사용할 때는 암호화할 때 저장된 IV를 Cryptore#decrypept의 두 번째 매개변수에 전달합니다. Sample code그런 고민은 없는 것 같아요.JavaKotlin로 완전한 동작을 확인할 수 있는 샘플 코드를 포함한다.

    Important


    Android Keystore System에서는 애플리케이션에 개인 키가 없으므로 암호화된 문자열을 다른 터미널로 직접 이동해도 암호를 해독할 수 없습니다.
    Android M을 기본적으로 ONAutoBackup으로 설정하거나 독립 백업과 같은 구조에서 암호화된 문자열을 m()에 포함하지 않도록 주의하십시오.m

    좋은 웹페이지 즐겨찾기