mar*_*who 9 java security encryption android
我试图了解java安全提供程序如何在android中工作.我想强制所有对Cipher.getInstance()的调用返回一个带有海绵城堡作为提供者的密码.我没有运气.
以下代码返回一个提供者为"AndroidKeyStoreBCWorkaround版本1.0"的密码,但我希望提供者为SpongyCastle.
我想这样做的原因是,我有一个多次调用javax.crypto.Cipher.getInstance()的库.我希望所有这些调用都能进入海绵城堡,而不必重新编写库以明确指定"SC"作为提供者.
public class MainActivity extends Activity
{
static
{
Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
Security.removeProvider("BC");
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
try
{
//this returns provider = "AndroidKeyStoreBCWorkaround version 1.0"
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/CTR/NoPadding");
//this works
// cipher = javax.crypto.Cipher.getInstance("AES/CTR/NoPadding", "SC");
}
catch(Exception e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
您只需要编写另一个类来调用 javax.crypto.Cipher.getInstance 并向其传递“SC”变量。您应该能够在不对原始库进行任何更改的情况下执行此操作,并且可以在与您提供的代码相同的文件中执行此操作。虽然这个答案看起来过于简单,所以也许您的问题还有其他方面?无论如何,这就是答案。
| 归档时间: |
|
| 查看次数: |
1506 次 |
| 最近记录: |