最近需要做一个类似于软件序列号生成器的东西,琢磨了几天,基本上应该就是一个加解密系统。对于加解密,个人的理解是: 1)加密后的信息不能采用明文(比如要传输250,把数值改一下顺序直接发025这个就比较容易让人猜出原始信息,即仅靠乱序是不靠谱的);
2)不能直接采用CRC异或方式加密,比如要传输025,这三个字符的CRC8校验字节为x,直接对025每个字符与x异或后明显不是明文了,但这种加密方式即使发送的信息中不带有校验字节x也可以很轻松地将025这个信息恢复出来,所以可以作为加密手段之一,但不能作为唯一手段,也即仅靠CRC异或加密是不靠谱的;
3)解密后的信息与原信息最好不是一一对应的关系,比如025变成358(每个字符加3),这种加密后也较容易从加密后的信息逆向推出原始信息,最好把原信息扩增一下,比如025变为012359,经扩增后信息量明显增加,不再具备一一对应的特点,就增加了解密难度,但因其中存在明文信息,在加解密信息多次出现的情况下也比较容易被解密,即仅采用扩增方法加密信息也是不行的;
4) 综合采用乱序、CRC和异或、扩增方式并适当安排每种加密方式的次序,目前我能想到的加密方法就是这个,但不知道这种加密方式**难度如何,是不是存在常规的**方法,大家做过信息加解密的欢迎补充意见,尽管本人非信息学专业人士,能多听到一点建议也是好的,听不听得懂另说!
|