[Android][Encryption]如何避免在声明加密类型时使用字符串

[Android][Encryption]如何避免在声明加密类型时使用字符串,android,encryption,bouncycastle,Android,Encryption,Bouncycastle,我正在使用BouncyCastle进行加密/解密。有没有办法避免Cipher.getInstance(“RSA/ECB/PKCS1Padding”)?我想防止攻击者知道我使用的算法。我正在尝试这样的方法: AsymmetricBlockCipher cipher = new PKCS1Encoding(new RSAEngine()); cipher.init(true, publicKey); 但是我不知道我是否在正确的轨道上。安全性并不依赖于隐藏方法,这就是为什么可以使用字符串指定方法,并

我正在使用BouncyCastle进行加密/解密。有没有办法避免Cipher.getInstance(“RSA/ECB/PKCS1Padding”)?我想防止攻击者知道我使用的算法。我正在尝试这样的方法:

AsymmetricBlockCipher cipher = new PKCS1Encoding(new RSAEngine());
cipher.init(true, publicKey);

但是我不知道我是否在正确的轨道上。

安全性并不依赖于隐藏方法,这就是为什么可以使用字符串指定方法,并且仍然是安全的。对于加密,保密性完全基于密钥


因此,使用一个好的密钥很重要,可以是随机数据,也可以是使用从PBKDF2密码派生的密码。

有什么区别?java代码的可读性与stringI相同。我可以对java代码使用模糊处理,但对string不能使用模糊处理。这不会有帮助,因为您无法模糊运行时库调用模糊处理仅对代码(以及包含的库)有效,但对运行时的调用不会模糊处理(因此,fx类的方法类似于
Utils.encrypt()
,它将变成
a.a()
,但在方法体中仍然会有
新的PKCS1编码(新的RSANGINE())
…不管怎样,专业的模糊处理程序也会加密字符串…我可以问你使用的是哪种版本的BC吗?我听说它完全被SpongyCastle取代了,是真的吗?我使用的是1.5版。如果它被SpongyCastle取代,或者如果我将SpongyCastle用作lib而不是BC,那会有什么区别呢?我知道,但我不知道我的源代码中需要避免使用类似“RSA/ECB/PKCS1PANDING”这样的字符串。不幸的是,一些不知情的人制定了不灵活的规则,而这些规则在某些情况下是行不通的。