안드로이드 암호화된 비밀 키를 안전하게 저장하기 위해 보조 라이브러리를 만들었습니다
Cryptore
https://github.com/KazaKago/Cryptore
What's this?Android Keystore System는 byte 배열을 암호화하는 데 전문적으로 사용되는 간단한 보조 프로그램 라이브러리이다.
Android Keystore System 자체는 암호화 외에도 다양한 용도로 사용되는 보안 키 생성 메커니즘간단하게 문자열로 암호화하고 싶지만 좀 복잡해서 매번 비교 템플릿 코드를 써야 하기 때문에 그 부분을 랩으로 싸는 것이 바로 이 프로그램 라이브러리입니다.
MIT 라이센스 배포 중
Requirement
자세한 내용은 공식 참조를 보십시오.
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그런 고민은 없는 것 같아요.Java와 Kotlin로 완전한 동작을 확인할 수 있는 샘플 코드를 포함한다.Important
Android Keystore System에서는 애플리케이션에 개인 키가 없으므로 암호화된 문자열을 다른 터미널로 직접 이동해도 암호를 해독할 수 없습니다.
Android M을 기본적으로 ONAutoBackup으로 설정하거나 독립 백업과 같은 구조에서 암호화된 문자열을 m()에 포함하지 않도록 주의하십시오.m
Reference
이 문제에 관하여(안드로이드 암호화된 비밀 키를 안전하게 저장하기 위해 보조 라이브러리를 만들었습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KazaKago/items/ec1a609feb6d10286e19텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)