我正在寻找一种方法,通过PHP脚本生成许可证密钥,然后将其传输到我的应用程序(Air,AS3),并在此应用程序中正确读取数据。例如,下面是代码:
<?php
error_reporting(E_ALL);
function KeyGen(){
$key = md5(mktime());
$new_key = '';
for($i=1; $i <= 25; $i ++ ){
$new_key .= $key[$i];
if ( $i%5==0 && $i != 25) $new_key.='-';
}
return strtoupper($new_key);
}
echo KeyGen();
?>
生成的密钥如下所示:1AS7 - 09BD-96A1-CC8D-F106。我想添加一些信息到关键的电子邮件用户,然后将其传递到客户端(空气应用程序),解密数据和应用程序中的dysplay。
有可能吗?
4条答案
按热度按时间kmbjn2e31#
好吧,让我们分解一下您的问题:
您希望:
1.在密钥中添加一些信息
那么你想添加什么信息呢?你想在添加的时候增加密钥的长度吗?你想让这些信息需要密钥来解密吗?从最大的意义上说,这在PHP中是完全可能的
1.电子邮件用户
PHP有一个mail()函数,它几乎可以正常工作。
1.然后传递给客户端(Air应用程序)
air应用程序是否通过http请求调用这个php脚本?如果是,设置content-type并输出它的键。
1.解密数据返回到第1点,可以,但您是否需要密钥,以及是否关心格式是否更改。此外,您不想在AS 3应用程序中解密数据吗?
1.如果AS 3应用程序要显示密钥或解密数据,则需要在AS 3中获取它以显示数据。
wj8zmpe12#
如果您只想存储一些信息,但使用上面使用的符号集(0-9A-Z)对其进行“编码”,则可以使用下面的算法。
这段代码是我的一个Python(3)老程序。它肯定不怎么花哨,也没有经过很多测试,但我想有总比没有好,因为你还没有得到很多答案。将代码移植到PHP或AS应该很容易。例如,reduce语句可以替换为命令式循环。还要注意,
//
在Python中表示整数除法。它也应该很容易拍一些压缩/加密到它。希望它像你想要的。这里去。
输出示例:
vu8f3i0k3#
使用md5你不能这样做,因为这是一个单向散列。你应该使用一个解密方法来这样做,因为它使用一个密钥来编码和解码它。有几个php扩展可以这样做,请参考php手册。你也可以使用第三方软件来这样做,例如http://wwww.phplicengine.com
t3psigkw4#
我用Python在Andre's answer中找到了值。
我和问题的作者一样,需要一个php解决方案,所以我把Andre的代码重写为PHP。我把它贴在这里,以防其他人发现它有用。
然而,Python版本中不存在这样的限制:
它不似乎编码任何大于8个字符的字符串。它可能是可解的吗?这与PHP如何处理非常大的整数有关。谢天谢地,我只需要编码少于8个字符的字符。它可能在不同的环境下工作,我不确定。无论如何,在说明了这个警告后,下面是这个类:
这里是一个例子用法,编码和解码“ABC123”: