如何加密URL?

时间:2013-05-28 16:35:04

标签: c# security encryption

我正在构建一个我希望用户注册之前可以使用它的Web服务。然后我会给他们一个注册码。

当他们致电我的服务时,他们会将注册码传给我。然后我会解密密钥以验证用户和服务。

我尝试使用AES进行加密,但关键是太大了。是否有另一种加密方式可以为我提供一个可以在URL中传递的较小密钥。

我希望它可以解密,以避免数据库查找。

由于

编辑:对不起,我没有传递AES密钥,我的意思是加密的AES值。如果我算正确的话,这是96个字节。

2 个答案:

答案 0 :(得分:3)

你不应该绕过钥匙。您可以使用密钥加密用户的ID,例如

$userID = 42;
$crypted = aes_encrypt($key, $userID . "some random salting/padding stuff");
$encoded = base64_encoded($crypted);

$url = "http://example.com?registrationConfirnmationID=$encoded";

然后您通过注册电子邮件发送用户$ url。他们点击它,你在服务器上反向:

$encodedID = $_GET['registrationConfirmation'];
$crypted = base64_decode($encodedID);
$registrationString = aes_decrypt($key, $crypted);

会给你

42some random salting/padding stuff

之后,你脱掉盐,你就完成了。

答案 1 :(得分:1)

来自AES的加密数据不会太大,即使密钥非常大。 URL参数的大小可能非常大,但这完全取决于您需要加密的内容。 在解密Web服务中的密钥时,数据库查找可能比CPU负载更快!

有很多选项,但任何哈希或加密数据都可以编码为类似Base64的东西,这使得它可以通过URL发送。