私はAndroidアプリケーションの一部の文字列を保護したいと考えています。私が今までに持っていた最善のアイデアは、AESアルゴリズムなどを使用してこれらの文字列を暗号化し、Google Cloud Storageファイルにパスワードを入れて(Firebase Authによる)認証でしか見ることができないということです。そのファイルを必要に応じてこれは良いアイデアですか?Androidアプリケーションの文字列保護
答えて
は、私はすでに私の質問を解決してきた、私は非常にうまく機能するこれらの2つの方法があります:暗号化方式はAESでメッセージを暗号化し
public static String encrypt(String message, String key) {
String cipherText = null;
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"));
byte[] bytes = cipher.doFinal(message.getBytes("UTF-8"));
cipherText = Base64.encodeToString(bytes, Base64.DEFAULT);
} catch(Exception ex) {
ex.printStackTrace();
}
return cipherText;
}
public static String decrypt(String encoded, String key) {
String decryptString = null;
try {
byte[] bytes = Base64.decode(encoded, Base64.DEFAULT);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"));
decryptString = new String(cipher.doFinal(bytes), "UTF-8");
} catch(Exception ex) {
ex.printStackTrace();
}
return decryptString;
}
した後に、それが読めるの中に、バイト[]を作るためにBase64を使用していますstrings.xmlファイルまたはJavaクラスに格納できる文字列で、decryptメソッドは逆の処理を行います。私のアプリケーションはFirebase Storage経由でオンラインで鍵を受け取るだけです。誰かが私のコードをリバースエンジニアリングしようとした場合
は今、彼らは見ることができる唯一のものは次のとおりです。
<string name="code_1">nuD559T1j8VSqjidiF3Yag==</string>
<string name="code_2">+4MTk9TaJJAJEV6D07K++Q==</string>
<string name="code_3">4GlPuHyAGhd48bjuSvcvQQ==</string>
<string name="code_4">yQnq3/tEIxJe67bhBuzoHw==</string>
<string name="code_5">p/sDptvxdi0ynsuybvfI+A==</string>
<string name="code_6">dE4aV0wG0aINh/dw0wwevQ==</string>
<string name="code_7">vxNaPmHvnbGsydOYXSOSUA==</string>
<string name="code_8">fClfcC/Eweh9tA8xz6ktGw==</string>
<string name="code_9">FxzAZpH+SJt5Lv6VFU/BEQ==</string>
<string name="code_10">qh3jFGHOGMzt50WOwTG4H4Y2Vbr7TzO433tbB3s6P34=</string>
<string name="code_11">u7kZjN/bxkMEqDws4nvbnQ==</string>
<string name="code_12">Ccf2u8FJGJ1lsiR7aX5OSw==</string>
<string name="code_13">E4XsWDHO28pOhV4ter/f2A==</string>
<string name="code_14">kgPr+Yz3t4S+Y5zQXjkvJA==</string>
<string name="code_15">19CpjUzKOw1fL8bZH8xkMg==</string>
あなたはNDKについて参照することができます: 例:
#include <string.h>
#include <jni.h>
jstring Java_com_riis_sqlndk_MainActivity_invokeNativeFunction(JNIEnv* env,
jobject javaThis) {
return (*env)->NewStringUTF(env, "pass123");
}
とAndroidでの使用:
public class MainActivity extends Activity {
static {
System.loadLibrary("sqlndk"); // line 11
}
private native String invokeNativeFunction(); // line 14
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String key = invokeNativeFunction(); // line 21
}
}
を、私はそれはあなたの問題を助けることができると思います!
これは悪い考えです。 ".so"ファイルのプレーンテキストをすべて取得できます。 –
オフラインモードでこの文字列を必要としない限り、とても良いアイデアのようです。それ以外の場合は、キーストアを使用します。
詳細情報:https://developer.android.com/training/articles/keystore.html
例:https://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/加えて
オフラインモードで、この値は必要ありません - あなたは保管し、そのキーストア内とリモートの秘密鍵だけではないすべての文字列を格納することができます。
- 1. APKの文字列の保護
- 2. マニフェストのメタデータ文字列をセキュリティで保護するAndroid
- 3. .NETアプリケーションで文字列を保護しますか?
- 4. App.config接続文字列保護エラー
- 5. ナンシーアプリで文字列を保護
- 6. Androidアプリケーション固有のビデオファイル保護
- 7. SQLインジェクションの保護 - 文字列からint型へのキャスト
- 8. 共有ホスティングでの接続文字列の保護
- 9. Word文書の保護/保護解除
- 10. 私のLINQ to SQL接続文字列を保護する
- 11. PowerShellのセキュリティで保護された文字列変換
- 12. Android保存文字列txtファイル
- 13. Java:保護された文字列をオーバーライド
- 14. UserInputから文字列を保護する方法
- 15. .dllファイル内で接続文字列を保護する方法
- 16. AWSパラメータストアセキュリティで保護された文字列
- 17. 文字列をパスワードで保護する方法は?
- 18. MVCとWebAPIアプリケーションの保護
- 19. Androidの署名保護と
- 20. Androidプロジェクトの保護方法
- 21. アプリケーションURLを保護する
- 22. Androidライブラリを保護する
- 23. データベースパスワード保護モバイルアプリiPhone/Android
- 24. JavaとJson-注射からのjson入力文字列を保護する
- 25. 中間の人間から接続文字列を保護する
- 26. Androidアプリケーションでdrawableリソースを保護する方法
- 27. Androidでアプリケーションをパスワードで保護する方法
- 28. API経由でAndroidアプリケーションからGETリクエストを保護
- 29. WebアプリケーションのためのWIFIの保護
- 30. AJAXスタイルのアプリケーションでのXSRFの保護
私はそれは良いアイデアだと思います。それは良い考えではないと思う何かがありますか? –