这是一个关于编码概念的问题。我见过许多关于如何实现产品密钥的问题,我知道如何实现,这个问题与什么有关,而不是如何实现。
好的,这是一个关于我正在做什么的背景故事,然后是我的问题。我的应用程序终极诊断套件,准备推出测试。我想实现一个产品密钥(我知道如何做到这一点)。我在如何做这件事上左右为难。
产品密钥: 7FD8-S89D-8746G-HUSJ
产品密钥: example@example.com
我知道如何做一个普通的产品密钥,但是对于第一个选项,我有一个随机数生成器,可以为我生成密钥,然后我可以将它们添加到db中并检查产品密钥,这相当简单。我唯一会遇到的问题是,如果100万人下载应用程序,那就是100万个产品密钥。这将占用比应用程序更多的空间。
但是,如果我使用产品密钥的电子邮件表单,并且有人下载应用程序,那么它将被数字签名,并将省略该100万行产品密钥文件。我的问题是:
如果我使用电子邮件表单(数字签名),我将如何清除垃圾邮件。另外,我知道我会为授权而安排一些活动。我只需要一个起点。这是@符号后面的结尾,例如:
您将有两个文本框,一个文本框将是txtUser.Text,另一个文本框与电子邮件结尾的文本文件相比将是txtEmailEndings.Text,因此简单地说,如果电子邮件的结尾为:
*@163.com
*@aichyna.com
*@berahe.info
if (txtEmailEndings.Text == dbNotAllowed.Text)
{
messagebox.Show("Please use a valid email, i.e, Gmail, Outlook, AOL");
}
else if (txtEmailEndings != dbNotAllowed.Text)
{
// do something to allow access to full program
}有了这个概念,我将有一个已知的电子邮件结尾列表,这是一个高风险的垃圾邮件机器人。我认为这将减少垃圾邮件机器人,但任何电子邮件都可以为垃圾邮件机器人。
我唯一的选择是收取固定的费用,这可以追溯到Flat Fee = Product Key。产品钥匙的没完没了的行。我不想只有一个产品的钥匙,因为所有的理由,它可以被利用。
这不是在任何特定的应用程序,如WinForms或WPF,这一概念可以用于两者。这就是为什么列出标签的原因。
任何问题或评论都会很有帮助。我使用的概念作为数字签名,微软从产品键迁移到数字签名的方式。
发布于 2018-12-09 16:26:56
当用户购买包含RSA签名的应用程序时,我会使用json文件作为您发送的许可文件。您的应用程序将拥有RSA密钥的公钥部分,它将用于验证许可证的签名,而您的服务器将拥有用于签名许可证文件的密钥。
系统是分散的,很容易出现用户泄漏许可证文件的情况,但在检查更新时,您可以向web api发送机器标识符,如果您检测到许多共享相同许可证guid的不同机器,则可以将许可证标记为不活动。
将RSA密钥的公钥部分存储为base64,这样就很难用十六进制编辑器来查找和替换。此外,您可能需要混淆二进制文件。
看看这个项目:https://github.com/dnauck/Portable.Licensing/blob/develop/README.md
您可以使用Recaptcha和电子邮件验证防止垃圾邮件。
您还可以给出随机的产品密钥,这些密钥由api转换成一个签名的许可证文件。这些密钥具有有限的激活(存储在服务器端),并绑定到机器标识符。
https://stackoverflow.com/questions/53693083
复制相似问题