0

我正在寻找一种使用 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 的最后两位。

4

2 回答 2

0

您无法解密 MD5 哈希。如果您稍后要通过检查“解密”它,您将希望将值存储在 MySql 表中并每次加密该表中的值以检查它是否与他们放入其中的密钥匹配。

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

于 2012-08-04T16:26:23.813 回答
0

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

如果您需要解密密钥以获取其中包含的信息,您可能必须创建自定义算法,或使用可解密算法(如 AES),然后base64_encode()使用加密字符串以获得用户友好的内容(但它将是一个长字符串,在大多数情况下)。查看可解密的方法的可用mcrypt功能,以找到适合您需求的方法。

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

于 2012-08-04T16:26:11.067 回答