c - 穷人序列号生成方案,第2部分

标签 c encryption

这是我之前问题的延续:

Poor man serial number generation scheme

假设我已经生成了私钥/公钥对,但我想将私钥保存在已注册的应用程序本身中 - 例如通过生成仅包含数据(公钥和私钥部分)的 .c 代码。

当然这是有风险的解决方案 - 因为如果黑客从应用程序中提取私钥 - 他可以自己创建许可证。

但这是“穷人解决方案”,所以我希望所有内容都在一个应用程序中 - 私钥和公钥 - 所以注册表单也是序列号生成对话框。

所以我想将私钥放在应用程序中,但要用一些只有我知道的密码来保护它。

因此,通过输入序列号 - 第一步我们尝试匹配特定硬件(验证签名),但如果不成功,我们尝试检查最终用户是否为“管理员”(或序列号生成人) ).

什么是最好的双向加密算法,它将使用密码作为输入并且可以容忍暴力攻击?

我想“管理员密码”应该足够可靠,不容易被猜到(没有在任何著名的暴力黑客词典中列出)。

此外,最好将密码存储在注册表中/或至少以加密形式存储。 password === sha-1 hash ===> 20 bytes hash 可能有意义 - 将其存储在注册表中(“管理员密码”),然后使用 hash 加密私钥。

与上一个问题相同的问题 - 作为基础,我更愿意使用纯 C 或 C++(不是 C#),最好是 Windows/wincrypt.h 或任何现有的纯 C 源代码(最好不是庞大的第 3 方库)。

最佳答案

在此发布对此的回答:

Poor man serial number generation scheme

在我自己的原型(prototype)中,我使用 RC4 流加密算法进行双向加密。

可靠吗?有人可以破解吗?!

关于c - 穷人序列号生成方案,第2部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630096/

相关文章:

c++ - int main(int argc,char* argv[]) 为什么argc给出2个参数?

c++ - 如何发送 EVP_PKEY 给对方?

c++ - 从具有可变参数数量的函数调用具有可变参数数量的函数

c - 线程安全、可重入、异步信号安全 putenv

c - 如何对ctk.c代码进行混淆处理,使其成为2001年IOCCC的获胜者?

c - `sizeof` 的操作数是否使用 VLA 评估?

vba - Excel的工作表密码保护是如何工作的

encryption - Ansible 检查文件是否被 ansible-vault 加密

c# - 修改配置部分将该部分保存到不同的配置文件

c - AES加密和解密不匹配