我想我achived我是特林做,登录由Facebook的100%手柄,通过HTTPS谷歌,我只在我的服务器使用令牌身份用户并增加得分
1令牌和比分被加密并发送至服务器
2-使用服务器查找单词和我使用HTTPS进行到Facebook或谷歌调用来检索用户ID和递增比分
注意,存储所有数据的私有密钥在我的服务器是100%公开,我不存储任何人的私人信息,我只是想保护令牌,如果有人获得令牌,并开始做大量的电话它可能达到每个用户200次/小时的facebook限制,导致我的应用无法运行。
我会升级到SSL在未来,当我开始从应用程序中获得的收入
的Android
String pubKeyPEM = "***";
public void something(){
String sendToServer = Base64.encodeToString(RSAEncrypt("test"),0);
}
public byte[] RSAEncrypt(final String request) throws Exception {
PublicKey publicKey = getPublicKey();
cipher = Cipher.getInstance("RSA/None/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(plain.getBytes());
}
public PublicKey getPublicKey() throws Exception {
PublicKey publicKey;
byte[] decoded = Base64.decode(pubKeyPEM, Base64.DEFAULT);
KeyFactory kf = KeyFactory.getInstance("RSA");
publicKey = kf.generatePublic(new X509EncodedKeySpec(decoded));
return publicKey;
}
PHP
$privkey = '-----BEGIN RSA PRIVATE KEY-----';
function decrypt($data){
global $privkey;
if (openssl_private_decrypt(base64_decode($data), $decrypted, $privkey))
$data = $decrypted;
else
$data = '';
return $data;
}
的私钥被转移到一个更安全的地方,但这是工作就像我想
我的服务器也在检查令牌是否是由我的应用程序ID生成的,所以如果有人试图使用不同的令牌,它将显示不同的应用程序ID。
“我想加密的一切”是什么意思?传输中的数据,设备中的数据,服务器上的数据,还有其他内容? – zaph
在运输过程中,这是为了避免令牌盗用或分数操纵,我有一个带有令牌和分数的json数组,我希望能够在传输过程中保护这一点,我可以在手机上加密,但我无法在服务器中解密 –
然后正确答案是HTTPS。有[让我们加密](https://letsencrypt.org/),有点更新或支付证书的麻烦,这是安全性的代价。还pi防止MITM攻击的证书。安全既不是免费的,也不容易,但你的用户应该得到它。 – zaph