ang*_*guy 33 licensing authorization
有关Stack Overflow上提出的许可证密钥的许多问题.但是他们没有回答这个问题.
任何人都可以提供一个简单的许可证密钥算法,该算法是独立于技术的,并且不需要数学文凭来理解吗?
许可证密钥算法类似于公钥加密.我只需要一些简单的东西,可以在任何平台.NET/Java中实现,并使用像字符这样的简单数据.
写为伪代码的答案是完美的.
因此,如果一个人呈现一个字符串,则可以生成一个补充字符串,即授权代码.以下是它将用于的常见方案.
不要害怕描述你的答案,好像你和一个5岁的老人说话,因为我不是数学家.
tyl*_*erl 43
没有可靠的许可算法.真.甚至没有一个.对于您可以购买的最流行,最昂贵的专有软件,您还可以找到不需要许可的"密钥生成器"和黑客版本.
不要担心让它"牢不可破",只需做一些简单的事情.一种流行的机制是,在购买时,询问用户的名字,然后给他一个许可证密钥,该密钥是从用户名称的加密哈希(例如MD5总和)或其中的一些变体派生的.然后,在软件中再次询问他们的名字,加上注册码(MD5派生的东西); 你检查它们是否匹配,从而激活软件.
这会被黑客攻击吗?绝对.一旦有人弄清楚你是如何生成许可证密钥的,他们就可以生成自己的许可证密钥.但是,如果您保留了迄今为止生成的"官方"许可证密钥的数据库,那么至少您将能够在以后识别欺诈者(可能是在他们尝试下载"高级"内容或其他内容时).
但是不要太担心阻止黑客破解你的代码.它会发生,但它们只占市场的一小部分,不会对您的整体销售产生重大影响.
我使用这样的系统:
•从Windows许可证密钥+试用期结束日期创建字符串
•从字符串生成散列(Sha/md5)
•将试用结束日期转换为int(例如天数)
•密钥成为试用结束日期+哈希的某些部分
•将键转换为仅大写字符,以便更容易输入
ABCD-DEFG-HIJK ...
验证工作如下
•再次将密钥转换为字节
•提取试验结束日期
•从Windows许可证密钥+试用结束日期创建字符串
•哈希
•将哈希与其余密钥进行比较
这对我的观众来说足够困难.
小智 6
答案是不,不存在不需要数学文凭即可理解的安全许可证密钥算法。
最好的许可证密钥是使用非对称加密算法进行数字签名的密钥。您使用私有加密密钥对密钥数据进行签名并将签名嵌入到密钥中,密钥验证(这意味着签名验证等)是使用公钥完成的。通过这种方式,没有人可以创建许可证密钥,除非他们有权访问......私有的私钥。问题在于很少(且困难)算法具有足够短的签名大小以嵌入产品密钥。RSA 不是其中之一(RSA512 的签名大小是 1024 位 - 太多了)。
您可以查看 SoftActivate Licensing SDK,它使用椭圆曲线加密技术生成简短的数字签名许可证密钥(C++/C# 源代码可用)。
老实说,你试图做的事情毫无意义。不管你编写一个验证/加密/密钥系统需要多少时间,估计有人破解它大约需要一半的时间。即使您加密了最终的可执行文件。但是,作为一种延迟措施或一种减少人们为被盗副本获得高级支持的机会的方法,它会有所帮助。也用于简单的买家跟踪。或者为了好玩。:p
无论如何,有几种方法可以处理它。许多软件使用名称(可能还有公司)字符串和哈希函数来生成密钥。这具有恒定的优点(只要名称相同,哈希相同,键相同)。它也是一个非常简单的系统,特别是如果您使用众所周知的哈希,例如 MD5。
hash = md5(name);
Run Code Online (Sandbox Code Playgroud)
一些更高级的应用程序使用内部函数来生成某种类型的验证码,当你将它和给定的名称结合起来时,你可以创建(并发送回)一个哈希。
validCode = getCode(name);
hash = myHash(name ^ validCode);
Run Code Online (Sandbox Code Playgroud)
一些使用基于系统的代码(Windows 是一个很好的例子),它对硬件位进行采样并从中构建标识符。如果您可以了解处理器名称或速度或其他任何内容,则可以运行类似的程序。唯一的问题是系统更改会使代码无效,因此您可以警告用户(并放弃部分流程)或让他们意外发现(不好)。
sysID = processor_name() | ram_Speed();
hash = md5(sysID & name);
Run Code Online (Sandbox Code Playgroud)
您可以使用散列函数、数据获取、字符串输入、布尔运算等的任意组合。需要考虑的一件事是您不需要能够逆转该过程。只要您可以用相同的结果复制它(任何好的散列函数都可以),您就可以相互检查散列结果并确保它是有效的。你投入的越多,它就会越复杂,但它就越难破解。
希望这对您的问题有所帮助。
| 归档时间: |
|
| 查看次数: |
45244 次 |
| 最近记录: |