【问题标题】:[Android][Encryption]How to avoid using string while declaring type of enryption[Android][加密]声明加密类型时如何避免使用字符串
【发布时间】:2017-01-20 09:37:18
【问题描述】:

我正在使用 BouncyCastle 进行加密/解密。有什么办法可以避免Cipher.getInstance("RSA/ECB/PKCS1Padding")?我想防止攻击者知道我正在使用哪些算法。我正在尝试这样的事情:

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

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

【问题讨论】:

  • 那会有什么不同? java的代码可读性和string一样
  • 我可以对 Java 代码使用混淆,但我不能对字符串做同样的事情。
  • 这将无济于事,因为您无法混淆运行时库调用,混淆仅适用于您的代码(和包含的库),但对运行时的调用不会被混淆(所以 fx 你有类方法如Utils.encrypt() 它将变为 a.a() 但在方法主体中仍然会有 new PKCS1Encoding(new RSAEngine()); ...无论如何专业的混淆器也会加密字符串 ...
  • 请问您使用的是哪个版本的BC?我读到它完全被 SpongyCastle 取代,是真的吗?
  • 我使用的是 1.5 版。如果将其替换为 SpongyCastle,或者我将 SpongyCastle 用作 lib 而不是使用 BC,会有什么不同?

标签: android encryption bouncycastle


【解决方案1】:

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

因此,使用好的密钥很重要,无论是随机数据还是使用从 PBKDF2 密码派生的密码。

【讨论】:

  • 我知道这一点,但我要求在我的源代码中避免使用像“RSA/ECB/PKCS1Padding”这样的字符串。
  • 不幸的是,不知情的人有时会制定不灵活的规则,在某些情况下是行不通的。
猜你喜欢
  • 2014-06-05
  • 2023-03-07
  • 2012-01-26
  • 2012-05-11
  • 1970-01-01
  • 2010-11-22
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多