【发布时间】:2013-10-19 12:22:06
【问题描述】:
我正在使用 php webservices 调用的 android 开发一个小项目。
我希望我的网络服务受到保护,但是通过使用 GET/POST 请求方法,我认为它并没有受到太多保护。谷歌搜索后,我在“phpseclib”中得到了 RSA 实现,它也有很好的文档。但是我很困惑,所以想在这里发布。
基本上我需要的是:
- 来自 Android 我将调用一个带有“加密参数合并在一个字符串中”的 url。 (我会先在 json 中编码参数,然后再加密)。
- 我将在 php 中提取的那些参数,并进行相应的处理。
json 字符串: {user_id:xyz@gmail.com, passwd: Password!}
加密到: XsjkhkjwehrkanmNXmnskjawrhjlljahdhuw
例如。 http://my.domain.com/webservices/call.php?params=Xsjkhkjwehrkanm,NXmnskjawrhjlljahdhuw 在 php 中,我将从 $_GET['params"'] 中提取用户 ID 和密码
这在 base64_encode(), base64_decode(), 中是可能的,但 base64 编码器只会混淆字符串,实际上不会加密。
我需要公钥/私钥机制。
但是我已经尝试过了:(https://launchkey.com/docs/api/encryption/php/phpseclib)
<?
function rsa_encrypt($key, $message) {
$rsa = new Crypt_RSA();
$rsa->loadKey($key);
$encrypted = base64_encode($rsa->encrypt($message));
return $encrypted;
}
?>
它没有返回任何 $encrypted 字符串。
任何帮助将不胜感激。
谢谢..! :)
【问题讨论】:
-
嘿,你为什么不在所有网站之上实施 SSL/TLS?
-
关于在 GET 请求中传递密码,我不推荐它,使用 POST,然后探索只有您的应用程序和 API 知道的密码参数的散列和加盐。这将使请求更加安全。涉及密码的地方总是使用 HTTPS、散列和盐。但是,当您只是传递查询时,可能是在一个宁静的庄园中,我目前使用一种技术,其中查询字符串中有许多参数和值,然后所有这些都在签名参数中进行散列和加盐处理。然后您可以在 api 端对此进行解码并防止篡改...
标签: php android web-services encryption phpseclib