打印
[通信技术资料]

数值和字符串加密的几个要点

[复制链接]
2995|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ColeYao|  楼主 | 2022-11-10 15:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    最近需要做一个类似于软件序列号生成器的东西,琢磨了几天,基本上应该就是一个加解密系统。对于加解密,个人的理解是:      1)加密后的信息不能采用明文(比如要传输250,把数值改一下顺序直接发025这个就比较容易让人猜出原始信息,即仅靠乱序是不靠谱的);
      2)不能直接采用CRC异或方式加密,比如要传输025,这三个字符的CRC8校验字节为x,直接对025每个字符与x异或后明显不是明文了,但这种加密方式即使发送的信息中不带有校验字节x也可以很轻松地将025这个信息恢复出来,所以可以作为加密手段之一,但不能作为唯一手段,也即仅靠CRC异或加密是不靠谱的;  
      3)解密后的信息与原信息最好不是一一对应的关系,比如025变成358(每个字符加3),这种加密后也较容易从加密后的信息逆向推出原始信息,最好把原信息扩增一下,比如025变为012359,经扩增后信息量明显增加,不再具备一一对应的特点,就增加了解密难度,但因其中存在明文信息,在加解密信息多次出现的情况下也比较容易被解密,即仅采用扩增方法加密信息也是不行的;

      4) 综合采用乱序、CRC和异或、扩增方式并适当安排每种加密方式的次序,目前我能想到的加密方法就是这个,但不知道这种加密方式**难度如何,是不是存在常规的**方法,大家做过信息加解密的欢迎补充意见,尽管本人非信息学专业人士,能多听到一点建议也是好的,听不听得懂另说!

使用特权

评论回复

相关帖子

沙发
ColeYao|  楼主 | 2022-11-10 15:21 | 只看该作者
本帖最后由 ColeYao 于 2022-11-10 15:22 编辑

  附件是自己做的一个基于CRC32的加解密工具软件,可以把16位数字组成的信息转换为18位大小写字母的加密信息,并且收到加密信息后可以把原先的16位数字恢复出来,供大家评估参考。

CRC32加解密Demo.png (39.17 KB )

CRC32加解密Demo.png

CRC32版本加解密工具软件.rar

341.27 KB

使用特权

评论回复
板凳
憨厚诚实大叔| | 2022-11-10 16:34 | 只看该作者
直接用密钥加密的算法啊

使用特权

评论回复
地板
ColeYao|  楼主 | 2022-11-10 16:51 | 只看该作者
憨厚诚实大叔 发表于 2022-11-10 16:34
直接用密钥加密的算法啊

你说的是那个公钥、私钥的算法吧?没有做过,因为解密端是单片机,太复杂的算法也担心单片机应付不过来,要是你觉得有对单片机比较适用的,可以告知一下,多谢!

使用特权

评论回复
5
R2D2| | 2022-11-10 18:58 | 只看该作者
TEA、XTEA、XXTEA

poly1305、chacha20

使用特权

评论回复
6
eydj2008| | 2022-11-10 21:47 | 只看该作者
那么多加密算法 拿一种用不就好了

使用特权

评论回复
7
ColeYao|  楼主 | 2022-11-11 08:58 | 只看该作者
R2D2 发表于 2022-11-10 18:58
TEA、XTEA、XXTEA

poly1305、chacha20

     非常感谢提供一些常规的单片机加解密算法,我网上查了一下,可以找到现成的C语言代码,看似代码也不复杂,我试试看是不是可以采用基于CRC16校验和异或(掩盖明文信息)+乱序(加密码,比如生成的字符串输出时第三和第九位对调,相当于加了一个39的密码)+扩增(原始信息前面加入一段随机数值,这样同一段信息每次输出的加密信息完全不一样,无一一对应关系)这三种方式的自制加解密方法结合TEA加解密算法进行二次加密,以便达到更好的加密效果(单独使用公开的TEA加密算法不是很放心,公开算法结合私有的加密算法我觉得会更保险一点)。

使用特权

评论回复
8
ROSHEN_007| | 2022-11-11 13:22 | 只看该作者
加密就两种对称加密,非对称加密,非对称的安全性高私钥加密公钥解密例如RSA;对称加密算法都被**了比如AES之类的,以后只有量子加密是无法**且能保证加密可靠性的。单片机来说网上的一些加密算法,或者自己想一些加密算法原理其实就是对称加密,用一种方式加密,用同一种方式解密,只要知道加密规则基本就能解密,只能防范低级别的信息窃取,如果要防范高手比较难;加了比不加好聊胜于无,如果对手水平低有奇效。

使用特权

评论回复
9
ColeYao|  楼主 | 2022-11-11 14:04 | 只看该作者
本帖最后由 ColeYao 于 2022-11-11 14:11 编辑
ROSHEN_007 发表于 2022-11-11 13:22
加密就两种对称加密,非对称加密,非对称的安全性高私钥加密公钥解密例如RSA;对称加密算法都被**了比如AES ...

是的,比较麻烦,单片机的解密算法很难隐藏,顶多客户把整个单片机的代码全部解密出来慢慢分析,所以最终所有的加密要要求有反馈,也即单片机可以与服务器通讯,将收到的加密和解密信息返回到服务器端,这样通过检查是否有序列号重复使用或者是否有未生产的序列号被投入使用就能知道客户的序列号是否合法了!  另外还有一种比较保险的加密方式,就是即使客户知道了算法要算出解密后的序号也要很长时间,只要当前最快的计算机解密时间足够长,那么这个加密算法也是安全的,可惜这种方法不适合单片机,因为单片机本来运算速度就是硬伤!

使用特权

评论回复
10
R2D2| | 2022-11-11 21:48 | 只看该作者
ColeYao 发表于 2022-11-11 08:58
非常感谢提供一些常规的单片机加解密算法,我网上查了一下,可以找到现成的C语言代码,看似代码也不 ...

TEA本身就是异或加乱序,已经足够用了,你再加没有意义。唯一有意义的事情可以在原文里面加真随机码,让同一信息加密出来的密文完全不一样。

使用特权

评论回复
11
憨厚诚实大叔| | 2022-11-16 11:15 | 只看该作者
R2D2 发表于 2022-11-11 21:48
TEA本身就是异或加乱序,已经足够用了,你再加没有意义。唯一有意义的事情可以在原文里面加真随机码,让 ...

对,加无意义的随机码,避免相同的数据加密的密文一样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

380

帖子

5

粉丝