我正在寻找一种使用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 :(得分:0)
您正在使用md5
算法,这是一种单向散列算法。换句话说,你无法解密它。使用这种散列算法的普通实例不会尝试解密,而是将给定输入(用户密钥)与现有散列进行比较。
如果您需要解密密钥以获取其中包含的信息,您可能必须创建自定义算法,或使用AES等可解密算法,然后base64_encode()
加密字符串以使用户友好(但在大多数情况下,它将是一个长串。查看可用于解密的方法的mcrypt
函数,以找到符合您需求的方法。
如果您需要特定的密钥格式,如您的示例所示,自定义算法可能是您最好的选择。
答案 1 :(得分:0)
您无法解密MD5哈希。如果您稍后要通过检查“解密”它,您将需要将值存储在MySql表中并每次加密该表中的值以检查它是否与它们放入的密钥匹配。
不要使用AS3加密任何内容,因为有人可以轻松反编译您的.swf并查看您的源代码。