我是这个领域的新手,我必须构建一个相当安全的许可证机制,但我对公钥系统的工作方式有一些疑问。
想象一下密钥生成器的实现,该生成器使用私钥生成具有MAC和到期日期的字符串。该字符串将由软件解密,并且将检查MAC以查看它是否可以执行。我的问题是:如果有人解密我的消息并看到了MAC,那么创建密钥会相当容易,不是吗?我这样说是因为我知道有一些数学背后的事实是你可以用一个私钥加密并用公共密钥解密,因此加密消息,真实消息和公钥我想有人可以找到私有键。
关于是否有必要在加密之前散列某些消息,我有点迷失。并且还使用椭圆曲线进行压缩。如果有人能给我一些关于这个主题的信息,我将不胜感激。
P.S。我正在使用C ++,但任何其他语言的评论都是受欢迎的。
答案 0 :(得分:2)
创建DSA或ECDSA或<insert favourite sigining algo here>
密钥对...您保持私钥安全...公钥嵌入到您的二进制文件中
创建包含相关许可信息的数据结构
压缩它
签名
许可证检查后<p>:验证许可签名
解压缩结构
根据许可证数据进行所需的检查
常见的不常见的不对称密码不容易发生已知的明文攻击
据我所知,椭圆曲线不用于压缩上下文
椭圆曲线用于加密(读加密和数字签名)的上下文