
我现在有一个注册码明文:
endTime:2021-12-12 12:12:12@username:qq1234567@startTime:2021-11-11 11:11:11 这个注册码很简单, 包含了开始时间、过期时间、用户名 3 个字段,
在注册机上,我想用某个算法把它加密,发给客户
客户再把机密后的注册码输入软件,软件根据某个算法解密,然后判断是否 还能使用
我研究了一下:
md5 摘要算法, 破解门槛太低
其他的一些加密算法,似乎算出来的结果,位数太长了, 动辄位数上百,甚至更长
我希望加密后的信息,长度尽可能控制在 100 位以内
不知道大家有啥建议吗?
这个算法不需要太高级 , 不是什么大软件, 只要能防住一般小白即可
谢谢
1 horizon 2021 年 10 月 22 日 MD5 破解门槛低吗。。 |
2 shawnsh 2021 年 10 月 22 日 via Android MD 5 不是加密算法,因为不能解密 |
3 aggron 2021 年 10 月 22 日 pbkdf2 或者 bcrypt |
4 xiaopc 2021 年 10 月 22 日 via iPhone 首先,你这明文要是能在 client 「解密」,就只能用加密而不是摘要算法 其次,更简单破解的方式不是直接跳过解密吗,再强的算法也不防逆向 最后,MD5 哪年被「破解」了,最多是彩虹表和对撞 |
5 dilu 2021 年 10 月 22 日 重要功能放到服务端来做就行,客户端不管怎么搞都没用的 |
6 find456789 OP |
7 crab 2021 年 10 月 22 日 @find456789 AES,密钥 对方机器码(cpu 硬盘 等等序列号或者用户名)+你自己随便添加一些 |
8 SingeeKing PRO 最简单的 异或 轻松防小白 |
9 sadfQED2 2021 年 10 月 22 日 via Android 其实吧,你随便 aes 加密下就行了,你要是真遇上逆向大佬,用什么加密算法都白搭。 随便加密下,防防普通人就行了 |
10 sadfQED2 2021 年 10 月 22 日 via Android @find456789 base64 肯定不行啊,base64 md5 这些都不是加密 |
11 MatDK 2021 年 10 月 22 日 如果要 1 个简单算法: 1. 把 username 扩展到 128 位 (可以用 kdf,偷懒就填充 1/0,或者自己定义 1 个填充得序列,写到程序里面) 2. 用 AES/ChaCha20 加密 优点是长度和注册码长度基本一致 如果要 1 个高级的算法: 1. 自己生成一对公私钥 2. 私钥自己留着存好,公钥可以写到程序里面去 3. 注册码= BASE64[Sign(私钥,注册码明文)+注册码明文] 验证得时候 Verify (公钥,注册码签名) 缺点是长度估计超标了 |
12 arthurire 2021 年 10 月 22 日 注册码一般都会有一个类似于识别码的东西, 比如把对方硬盘序列号什么的或者配置信息做个加密,比 QQ 好很多,不然其实涉及到泄露隐私的问题,我有注册码就能找到对方 QQ,我觉得挺蠢的. 也不要想着"通过加解密算法来提升破解难度",不现实,对方把你的 je 改成 jne 或者改成 jmp 你这验证就白做了.对于普通软件而言这个工作我十一二岁就会了,难度非常低. @MatDK 说的很详细了. 长度超标问题,大部分软件是靠一个文本文件解决的(改后缀到 xxx.key),或者给你一个窗口让你贴一大段注册码. |
13 ysc3839 2021 年 10 月 22 日 要验证有效性的话基本都是用非对称加密算法,生成注册码时用你的私钥签名,校验时用公钥验证。 可以自己看看 RSA 的原理,然后自己写一个,降低密钥长度即可减少生成后的长度,但是会更容易解出私钥。 另外加长密钥虽然能在算法层面防止破解,但是还是防不了直接修改程序。 |