相关疑难解决方法(0)

base 64编码的目的是什么以及它在HTTP基本身份验证中使用的原因是什么?

我没有得到Base64加密.

如果可以解密Base64字符串,它的目的是什么?

为什么它被用于HTTP Basic身份验证?

这就像告诉别人我的密码被反转为OLLEH.

看到OLLEH的人会知道原来的密码是HELLO.

security encryption base64

126
推荐指数
6
解决办法
7万
查看次数

为什么通过默默无闻的安全是一个坏主意?

我最近遇到了一个系统,其中所有的数据库连接都是由各种方式模糊的例程管理的,包括base 64编码,md5sums和各种其他技术.

这只是我,还是这种矫枉过正?有哪些替代方案?

security encryption security-by-obscurity

68
推荐指数
6
解决办法
3万
查看次数

使用SharedPreferences进行安全性

我正在开发一个应用程序,我必须存储非常敏感的数据,它不应该与用户联系.我从这个来源得知,如果一个设备是root用户,那么访问SharedPreferences和修改它就是一个很好的例子.我不想要它.那么有什么方法可以保护我SharedPreferences不被任何地方访问.或者更好的是,如果有人可以建议更安全的数据存储选项

android sharedpreferences

15
推荐指数
1
解决办法
7470
查看次数

使用 EncryptedSharedPreferences 时是否应使用任何 proguard 规则?

在使用EncryptedSharedPreferences之前,我的应用程序在使用 (minifyEnabled = true) 的发布模式下工作正常,将安全库 (版本 1.0.0-rc01)添加到我的应用程序后,应用程序在打开时崩溃,如果我使用 (minifyEnabled = false),应用程序可以正常工作好吧,我想我在proguard-rules.pro 中遗漏了一些东西,但我搜索了很多没有找到任何东西。

android proguard androidx android-jetpack-security

9
推荐指数
2
解决办法
1321
查看次数

使用 Jetpack 的 EncryptedSharedPreferences 和 EncryptedFile 有哪些好处?

在阅读了大量文章和 stackoverflow 帖子后,与使用非加密对应部分相比,我找不到使用 EncryptedSharedPreferences 或 EncryptedFile 的具体原因。

\n

首先,我想谈谈必须考虑安全性的设备的两种状态:

\n
    \n
  • 设备没有受到损害
  • \n
  • 设备受到威胁
  • \n
\n

当设备受到损害时,应用程序将被沙箱化。只要应用程序遵循Android 的安全最佳实践,那么应用程序就应该没问题——安全方面。由于当设备不包含在内时,内部应用程序数据是安全的,因此无需对其进行加密。

\n

当设备受到损害时,应用程序几乎无法保护自己。唯一真正的策略是最大限度地减少设备上的敏感数据量。然而,EncryptedSharedPreferences 和 EncryptedFile 似乎意味着即使设备受到威胁,它也可以保护用户数据,正如 Android 博客Data Encryption on Android with Jetpack Security中所述:

\n
\n

为什么要加密应用程序中的数据?Android从5.0开始默认加密用户数据分区的内容吗?当然可以,但在某些用例中,您可能需要额外级别的保护...在应用程序主目录中,如果您的应用程序处理敏感信息(包括但不限于个人身份信息 (PII)),则您的应用程序应该加密数据、健康记录、财务详细信息或企业数据。

\n
\n

但“额外保护级别”是什么意思呢?根据同一个博客:

\n
\n

在我们开始加密您的数据之前,了解如何保证您的加密密钥的安全非常重要。Jetpack Security 使用主密钥...生成并存储在 AndroidKeyStore 中。

\n
\n

因此Jetpack的EncryptedSharedPreferences和EncyptedFile使用KeyStore来生成和存储用于加密的密钥。这是通过检查源代码来验证的。而这也是问题所在。

\n

KeyStore无意生成密钥来加密设备本地数据。正如Android - What are the effective security Benefits …

security encryption android android-keystore android-jetpack

8
推荐指数
1
解决办法
1942
查看次数

受保护的 Android SharedPreferences 错误:'Caused by: java.lang.RuntimeException: Field keySize_ for...'

在 Android Kotlin 项目中,我使用androidx.security库基于此链接实现了 EncryptedSharedPreference 功能,并且它在调试模式下运行良好。但是在发布模式下,我不断收到此错误

  java.lang.ExceptionInInitializerError
    at com.package_name.i.a.f(:46)
    at com.package_name.i.a.j(:52)
    at com.package_name.i.a.e(:82)
    at com.package_name.MyApplication.onCreate(:37)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
    at android.app.ActivityThread.-wrap1(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.lang.RuntimeException: Field keySize_ for k.a.d.a.h0.u not found. Known fields are [private int k.a.d.a.h0.u.i, private static final k.a.d.a.h0.u k.a.d.a.h0.u.j, private static volatile k.a.d.a.i0.a.a1 k.a.d.a.h0.u.k]
    at k.a.d.a.i0.a.v0.n0(:608)
Run Code Online (Sandbox Code Playgroud)

请分享您对如何解决此错误的想法。

security sharedpreferences encrypted-shared-preference

7
推荐指数
3
解决办法
1103
查看次数

如何提供相同类型的对象?Dagger2

我是新手,Dagger2并试图建立这样的样本,以了解它是如何工作的.

有我的示例代码:

MainActivity

public class MainActivity extends AppCompatActivity {

@Inject
protected ApiInterface apiInterface;

@Inject
protected Integer valueInt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    App.getComponent().inject(this);
}

public void testButton(View view) {
    if (apiInterface == null || valueInt == null) {
        Log.e("TAG", "apiInterface == null");
    } else {
        Log.e("TAG", "apiInterface != null : " + apiInterface.value +  " : " + valueInt);
    }
 }
 }
Run Code Online (Sandbox Code Playgroud)

Component

@Singleton
@Component(modules = {ModelModule.class, AnotherModule.class})
interface AppComponent {

void inject(MainActivity mainActivity);
} …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

2
推荐指数
1
解决办法
309
查看次数