草庐IT

android - 安全 API key 安卓

我目前正在从事一个使用GoogleBloggerAPI的项目。前天(星期六)有人攻击了我的应用程序并获取了APIKey,我的每日访问帖子限制为100,000(100K/24小时)。我在星期六达到了上限(我怀疑这些是使用我的APIkey进行的欺诈性点击,因为我只有大约4000名客户使用该应用程序,我将APIkey嵌入到客户端代码中)。之后,在五分钟内API限制再次达到(24小时后)5K。所以我删除了APIkey并生成了一个新key。我的问题是如何在客户端代码中保护我的新APIkey,这样攻击者就无法访问APIkey或至少通过某种方法间接使用客户端代码中的APIkey。

Android Facebook SDK 4.5.0 登录-注销问题无效 key 哈希错误,同时尝试再次登录

我按照https://developers.facebook.com/docs/facebook-login/android中的描述实现了Facebook登录按钮。具有配置文件和电子邮件读取权限的开发人员指南。当我按下登录按钮时,Facebook应用程序打开,然后我可以登录并可以从Facebook获取用户数据。此后,Facebook按钮自动变为注销按钮。当它被按下时,它会注销。到目前为止,它运作良好。在我的应用程序端完成Facebook注销后,想要使用Facebook按钮重新登录,Facebook因key散列错误而失败。如果我转到Facebook应用程序中的帐户设置,并从列表中删除我的

android - 在 Android 应用程序中存储 key 的最佳位置是什么?

在应用程序代码中存储APIkey、数据库加密key等的最佳位置是什么,这样任何人都无法通过反编译代码获得它?我使用混淆器来混淆代码,但它不适用于字符串。 最佳答案 无法将它们存储在应用程序中。该应用程序可以在修改后的设备上反编译或执行,从而提供对应用程序内存的更多访问权限,或者攻击者可以修改该应用程序以添加额外的网络或存储/数据库流量等日志记录。为了向服务器进行身份验证,您的应用可能应该通过交换用户输入的凭据来获取此类身份验证token或通过从AccountManager或类似API获取这些身份验证token来获取身份验证token

Android KeyStore - key 并不总是存在

在我的应用程序中,我们使用RSAkey,该应用程序在首次启动时生成(使用androidkeystore)。由于未知原因,该应用未能从某些设备上的keystore中检索到key。我检查了日志,但找不到此错误与特定操作系统版本或特定设备型号之间的关联。此外,我确信该应用程序仅在创建key后才尝试读取它。所以-我的问题是:据我所知,androidkeystore应该是持久的。什么会导致这样的错误?下面是相关的代码示例。key生成:try{KeyPairGeneratorgenerator=KeyPairGenerator.getInstance("RSA",keyStore.getProvi

android - 卸载应用程序时 KeyStore 条目是否丢失?

我在Androidkeystore中生成一个非对称key对,如下所示:我已将公钥用于对称key包装并将包装后的key存储到文件中。当我尝试使用私钥解包对称key时,我能够在该实例中这样做。重新安装我的应用程序后,我无法使用别名获取keystore条目。KeyPairGeneratorkpg=KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA,"AndroidKeyStore");kpg.initialize(newKeyGenParameterSpec.Builder(Constants.KEY_STORE_ALIA

java - 我可以检查两个 Android 应用程序是否使用相同的 key 签名吗?

我想检查AppA和AppB的签名是否相同。我想在AppA中进行检查并根据比较结果调用方法。publicbooleancompareAppSignatures(){Signature[]sigA=getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_SIGNATURES).signatures;Signature[]sigB=getPackageManager().getPackageInfo("",PackageManager.GET_SIGNATURES).signatures;returnArr

android - PBKDF2WithHmacSHA1 key 生成在 Android 上花费的时间太长

我想使用PBKDF2WithHmacSHA1生成key,但在android上计算时间太长。我在iOS上使用相同数量的迭代和普通加密,大约需要6秒,而在Android上需要100秒。代码如下:publicstaticStringgenerateStorngPasswordHash(Stringpassword){try{char[]chars=password.toCharArray();byte[]salt=getSalt();PBEKeySpecspec=newPBEKeySpec(chars,salt,1010101,32*8);SecretKeyFactoryskf=Secret

android - 如何验证 APK 未被篡改?

普通Androidrom(AOSP)不包含GoogleApps。如果我从其他来源下载GoogleApps,我如何验证它没有被篡改? 最佳答案 每个apk都使用发布key进行签名。如果apk被反编译并重新编译,则必须使用不同的发布key对新的apk进行签名(因为每个发布key都需要一个只有开发人员/公司知道的密码)。因此,您可以通过检查key的sha1来验证apk的真实性。希望对你有帮助编辑:您必须使用网络服务来验证您的应用程序的有效性(就像facebook所做的那样)您必须在您的发布key上执行此操作以获取您应用的key哈希,即。k

android - 了解谷歌开发者控制台

我对开发者控制台的功能有点困惑。我有一个项目,我在其中访问youtube数据apiv3。我已经创建了我的项目并获得了4个键:浏览器key服务器keyWeb客户端OAuth2.0客户端IDkey安卓key其中,前三个是由谷歌服务自动生成的。我通过提供项目的SHA-1指纹生成了androidkey。我有以下问题,但我似乎没有得到回答:为什么我会自动生成前三个?我不在后端工作,所以只是出于好奇,如果客户端使用服务器key而不是浏览器key怎么办?有什么区别吗?我想SHA-1的作用类似于公钥加密。它是否仅取决于包和开发环境?我没有为此使用keytool,而是直接使用Studio中的Signin

java - 在 Android 中使用 KeyStore 存储 key

我正在使用KeyStore来保护我的私钥,但是当行:FileOutputStreamfos=ctx.openFileOutput("bs.keystore",Context.MODE_PRIVATE);被执行我有这个异常:'java.lang.NullPointerException'.我不明白问题出在哪里。代码:privateContextctx;publicDataSec(Contextctx){ctx=this.ctx;}publicvoidgenKey()throwsException{SecretKeykey=KeyGenerator.getInstance("AES").g