2012-08-04 148 views
0

我正在寻找一种方法来使用AS3或PHP生成许可证密钥。 我需要使用用户名应用程序,版本号和最大用户数来计算密钥。AS3 Php密钥生成器

例如,这里是代码:

<?php 
    error_reporting(E_ALL); 
    function KeyGen($userName){ 
    $key = md5($userName); 
    $new_key = ''; 
    for($i=1; $i <= 25; $i ++){ 
       $new_key .= $key[$i]; 
       if ($i%5==0 && $i != 25) $new_key.='-'; 
    } 
    return strtoupper($new_key); 
    } 

    $userCab="MyUserName-v6.0-12"; 
    $key=KeyGen($userCab); 
echo $key; 
?> 

的生成关于这样键:1AS7-09BD-96A1-CC8D-F106。 但现在,如何解密这个密钥来提取$ userCab的最后两位数字。

+0

您有具体问题吗? – JeffryHouser 2012-08-04 14:26:02

回答

0

您正在使用md5算法,该算法是单向哈希算法。换句话说,你不能解密它。使用像这样的散列算法的普通实例不会尝试解密,而是将给定的输入(用户的密钥)与现有的散列进行比较。

如果您需要解密密钥以获取它包含的信息,您可能需要创建一个自定义算法,或者使用AES等可解密的算法,然后加密的字符串具有用户友好的东西(但它会在大多数情况下是一个很长的字符串)。查看可用的mcrypt函数,找到可解密的方法以找到适合您需求的方法。

如果您需要特定的密钥格式,如您的示例所示,自定义算法可能是您最好的选择。

0

您无法解密MD5散列。如果您稍后要使用支票“解密”它,您将需要将值存储在MySql表中,并且每次都对该表中的值进行加密,以检查它是否与它放入的密钥相匹配。

不要使用AS3来加密任何东西,因为某人可以轻松地反编译您的.swf并查看您的源代码。