Web applications 如何创建基于串行密钥的激活机制,以及在DB上存储哪些数据?

Web applications 如何创建基于串行密钥的激活机制,以及在DB上存储哪些数据?,web-applications,encryption,language-agnostic,activation,Web Applications,Encryption,Language Agnostic,Activation,我目前正在研究如何为基于web的产品管理平台创建一个基于串行密钥的激活机制(语言并不重要,因为这更像是一个设计问题),在这个平台中,出售的每个产品都有一个注册在线支持的许可证密钥 我有一个串行密钥编码器/解码器类,该类生成AES加密数据,然后对其进行base32编码以返回人类可读密钥;我需要弄清楚里面应该加密什么,是否应该包含实际的产品代码或者什么 此外,编码器也为每个序列生成不同的解密密钥,但我不确定是否喜欢这种方法。在这两者之间,比如说,每把钥匙都用盐,哪一个最好?另外,我应该在哪里存储解密

我目前正在研究如何为基于web的产品管理平台创建一个基于串行密钥的激活机制(语言并不重要,因为这更像是一个设计问题),在这个平台中,出售的每个产品都有一个注册在线支持的许可证密钥

我有一个串行密钥编码器/解码器类,该类生成AES加密数据,然后对其进行base32编码以返回人类可读密钥;我需要弄清楚里面应该加密什么,是否应该包含实际的产品代码或者什么

此外,编码器也为每个序列生成不同的解密密钥,但我不确定是否喜欢这种方法。在这两者之间,比如说,每把钥匙都用盐,哪一个最好?另外,我应该在哪里存储解密密钥和密码?我在考虑DB,以及激活密钥,如果当前方法有效,用于盐或解密密钥,是否正确

我还需要保持密钥长度在间隔内,这意味着我不能在加密中传递一定数量的字符。激活密钥应该保存实际的产品数据,还是只指向DB上的匹配行,在该行中激活密钥充当PK并从那里读取我需要的所有内容


提前感谢您的回复,我希望我的问题不要太粗略;请容忍我,因为我对这个特定的话题还比较陌生。我已经阅读了其他问题,但似乎没有一个能够解决在基于web的环境中实际存储激活密钥的问题。

在我看来,根本不需要加密

您可以创建强随机字节(例如,使用/dev/uradom)并将其用作激活密钥

像64位的随机性(从Uradom读取8个字节)可能就足够了,因为它可以提供大约2^32个“激活密钥”,而不会发生冲突。当然,确保它适合您的具体情况

例如,您的激活密钥可以如下所示(十六进制编码并用“-”号拼接:


我理解您的解决方案,但我并不完全相信:我真的可以不在密钥中携带实际信息而直接将其用作PK吗?我主要想在密钥本身中加密一条消息,以确保它是一个有效的密钥,例如一个简短的密码短语。激活密钥包含所需的信息(只有您的系统和客户端知道它)。这是一种“密码”。如果你使用它作为PK,它将保证它是unigue,但我不会让它PK最初,因为其他问题可能会出现。当然,这取决于你的系统。但无论如何,从你最初的帖子来看,看起来你可以使用“随机激活键”;希望这足够了,让我们看看。谢谢
28d7-59bf-0a29-b482