Articles of security

facebook如何使用密钥哈希validation应用程序的真实性?

在使用Facebook开发Android应用程序时,您需要将应用程序的密钥哈希上传到其网站。 有了这个,他们声称他们能够validation他们的服务器的调用实际上是从您的应用程序。 我已经读过这个问题Facebook如何validation移动应用程序,但它并没有真正提供实际的实现。 我试过查看facebook库的源代码,但无法弄明白。 从Android应用程序发送哪些数据以及可以在服务器中针对此哈希validation的加密? facebook实施的方法是否安全? 如果是,并且它可以在任何服务器中实现,我可以使用它来validation我的服务器我的应用程序没有使用不同的代码重新编译(这往往经常发生:() 我目前正在以这种方式实现这个想法: Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures; for (Signature sig : sigs) { verifyInServer(sig.hashCode()); } 其中verifyInServer是伪代码,用于针对具有签名存储值的服务器进行的检查。 它现在已经工作了,但我不确定它是否安全,而且我宁愿检查一个密钥哈希(它的公共)而不是这个签名数据(我不确定它是否是私有的,而不是可以欺骗的用户 )。

在Android的共享首选项中安全地存储Oauth2访问/刷新标记?

我知道我可以将值设置为“MODE_PRIVATE”,只有我的应用程序/用户ID将能够访问它们,但是,有什么方法让用户在任何时候访问它们? 那么将它们存储在共享首选项中是否“安全”,还是有更好的地方? 此外,如果我稍后决定公开某些用户设置的偏好,我是否可以隐藏这些值? 谢谢。 编辑:我也知道内部存储,但我想知道是否可以实现更简单的共享首选项。

在bouncycastle中是否支持RSA PKCS1-OAEP填充?

我正在Java / Android中实现encryption代码以匹配iOSencryption。 在iOS中,使用以下填充scheme使用RSA进行encryption:PKCS1-OAEP 但是,当我尝试使用PKCS1-OAEP创build密码时。 Cipher c = Cipher.getInstance("RSA/None/PKCS1-OAEP", "BC"); 以下是堆栈跟踪 javax.crypto.NoSuchPaddingException: PKCS1-OAEP unavailable with RSA. at com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineSetPadding(CipherSpi.java:240) at javax.crypto.Cipher.getCipher(Cipher.java:324) at javax.crypto.Cipher.getInstance(Cipher.java:237) 也许这个RSA/None/PKCS1-OAEP不正确? 但是找不到任何明确的答案来说明PKCS1-OAEP不被支持或者定义它的正确方法。 我正在使用海绵城堡库,所以有充分的bouncycastle实现。