在工作中总是遇到一些奇奇怪怪的问题,今天突然意识到,好记性不如烂笔头。
这也是我的一份博客。之后在工作中遇到的问题也会写成博客后续也供自己学习和回顾。
如果不涉及到机密算法和机密控制逻辑,也会将经验和职场干货分享出来,
这是我在一家单位实习的时候,发现通讯协议和实际逻辑分析仪读出来的不一致,经过最近查证程序,和自我学习(问AI)明白了原因。之前我一直以为,这么简单的通讯协议还要加什么密,(以前做的东西从来不加密)后来发现,这个行业抄袭比较严重,这么做也是保证销售量,之前遇到过一家客户,在竞争对手公司拿了一块板,给我们做方案,竞争对手做的整体方案很贵,但是分开的话我们的性价比更高。他拿竞争对手的板子过来我们与他通讯。经过分析和有协议说明,是简单串口9600波特率。直接明码,给什么值就实际反馈什么数据效果,这样就损失订单量。
我只说简单加密,就是异或。将数据异或后,发出去,接收端再异或回去,就还原了数据的真实性。例如0x8C^0xD2=5E,那么0x5E^0xD2等于8C,这就完成了一次加密和解密,加密的秘钥是0XD2这个秘钥可以随便取值。通常来秘钥(0xD2)bu不会应用于所有字节,而是每一个字节都用不同的秘钥,甚至这个秘钥都可以自定义。
当然如果单片机空间够大,完全可以吧位置交换,再异或,这样就增加了解密的难度,我现在想到的难度是将每个字节的所有位打乱,然后再异或。再发送,这样的缺陷就是空间占比太大,阅读不易。