新闻动态   News
联系我们   Contact
你的位置:首页 > 新闻动态 > 新闻资讯

2024.12.13 经验分享会

2024/12/13 18:23:14      点击:

      2024年12月13日下午,上海实邦电子科技有限公司开展了一次经验交流会,由瞿和曾工一起分享了他们在工作中积累的一些经验

      首先是工分享了----通讯加密知识点
      一,分享概述
      1,对称加密理解
      2,非对称加密理解
      3,信息摘要理解
      4,数字签名和数字证书理解
      5,AES加密使用详情
      6,Baes64编码
      二,加密简述
      1,什么是加密
      加密就是对明文数据按某种特殊算法进行处理,使其成为不可读的一段代码,通常称为“密文“, 密文通过”密钥“解密后还原出原来的明文,通过这样的途径可以达到保护数据不被非法人窃取、阅读的目的。

      2,常见的几种加密方式
      · AES 对称加密算法。
      · RSA 非对称加密算法。
      · MD5 消息摘要算法。

      3,对称加密算法
      对称加密是指加密和解密是使用同一相同的密钥。

      4,非对称加密算法
      非对称加密是指加密和解密使用不同的密钥进行加密和解密。非对称加密会同时生成一对密钥,公钥和私钥。
      
      一般情况下公钥进行公开给发送方加密数据,私钥不公开将收到的数据进行解密。私钥加密公钥解密一般用于签名和验签。

      5,信息摘要(MD5)
      信息摘要算法(例如:MD5)是一种散列函数,用以提供消息的完整性保护,MD5就是一种常用的摘要算法(或者指纹算法)。
      主要特点是具有压缩性:任意长度的数据算出的MD5值长度都是固定的。
      容易计算:从原数据计算MD5值很容易,不吃算力。
      抗修改性:对原数据有任何改动,哪怕只修改一个字节,所得到的值都有很大区别。
      结果不可逆:从结果无法反推出原数据。

      三,AES加密详解
      高级加密标准(Advanced Encryption Standard: AES)是美国国家标准与技术研究院(NIST)在2001年建立了电子数据的加密规范。其是对称加解密算法的最经典算法之一,它是一种分组加密标准,每个加密块大小为128位,允许的密钥长度为128、192和256位

      1,AES加密模式
      ECB(Electronic Codebook,电子密码本)
      之所以使用分组密码模式是因为分组密码只能处理定长的数据,如AES处理128bit,那么将明文切分成若干个128bit,分别加密。这种模式就是ECB模式,实际上有很明显的弱点,现在已经不被使用。
      ECB模式是最简单的一种,它有很严重的问题,就是相同的明文会得到同样的密文。因为每个分组加密方式和密钥都相同,若分组明文相同,加密后密文也相同。
      CBC(Cipher Block Chaining,串行密钥传输)模式
      CBC模式由IBM发明与1976年,在CBC模式中,每个平文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有密文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量。
      CTR(Counter,计数器)模式
      通过使用计数器生成密钥流,将密钥流与明文进行异或操作得到密文。
      CTR模式与CBC模式非常相似,但是它使用了不同的密钥分配方法。在CTR模式中,每个数据块都由一个随机数生成器产生,该随机数生成器用于确定数据的索引位置。这使得CTR模式非常适合于流式数据传输,例如视频和音频流媒体。CTR模式也非常快,因为它只需要处理每个数据块的中间结果,而不需要像CBC模式那样处理整个数据块。
      CFB(可逆计数器)模式
      CFB模式类似于CTR模式,但是它使用的是可变长度的密钥。在CFB模式中,每个数据块都有一个偏移量,这个偏移量是根据密钥计算出来的。这使得CFB模式非常适合于多通道应用程序,例如网络路由表。然而,由于密钥的长度可变,所以CFB模式不如CTR模式快速

      2,填充模式
      填充算法用于填充输入数据以匹配AES模式的要求。下面是一些常用的填充算法及其优缺点:
      (1)NoPadding
      NoPadding是一种不使用填充算法的加密模式。不做任何填充,但是要求明文必须是16字节的整数倍。这意味着输入数据将被直接编码为字节序列,而不会受到填充的影响。虽然NoPadding模式非常安全,但它会导致填充算法无法正确地处理数据。
      (2)ZerosPadding
      ZerosPadding是一种简单的填充算法,它将输入数据的最后一个字节替换为0。这种填充方式适用于所有AES加密模式,包括ECB、CBC和CTR模式。缺点是填充后的字节数量可能超过原始输入数据的大小。
      (3)PKCS5padding(默认)
      如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。
      比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}。
      PKCS5padding是一种常见的填充算法,用于填充数据以符合AES模式的要求。这种填充方式使用一个固定长度的填充字节序列,以确保输入数据被完全填充。PKCS#5 padding的优点是它可以适应各种输入数据的大小,但缺点是填充过程可能很慢。
      PKCS7padding
      PKCS7padding也是一种填充算法,它使用一个固定长度的填充字节序列来填充数据。这种填充方式的优点是可以适应各种输入数据的大小,并且填充过程相对较快。但是,它与PKCS#5 padding一样,可能需要较长的填充时间。
      ISO10126Padding
      如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。
      比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}
      四,Base64
      1,Base简述
      目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。网络传输时一般都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。
      在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。



       曾工介绍了 CAN与W5500网络通讯

       CAN总线通讯(ISO 11898
       CAN通讯是异步通讯,半双工,差分信号。没有时钟线,无法同时发送与接收,在同一时刻,只能有一个节点发送数据,其余节点都只能接收数据。由CAN_HIGH与       CAN_LOW两条差分信号线组成,差分信号能有效抑制电磁干扰(EMI),具有很强的抗干扰能力。时序定位准确。
       总线两端必须连接终端电阻才可以正常工作,终端电阻应该与通讯电缆的阻抗相同,典型值为120欧姆。其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠性

       闭环总线网络

       特点就是高速短距离闭环最高速度可达 5kbps-1Mbps,最长距离40m

 开环总线网络

       特点就是传输距离远,开环最高速度125Kbps,最远距离1km。
       如果是发送数据:控制器发送一个信号(0或1),收发器将这个信号变成差分信号传送到总线中。
       如果是接收数据:收发器将差分信号转化为0或1的二进制编码

总线网络的终端电阻

       在总线线缆的末端,阻抗的急剧变化会导致信号边沿能量反射,从而在总线信号上产生振铃现象。如果振铃幅度过大,将对整个总线的通信质量造成影响。通过在电缆末端增加一个与线缆特征阻抗相匹配的终端电阻,可以吸收这部分能量,避免振铃的产生

       1)提高抗干扰能力:终端电阻能够加速总线的放电过程,让寄生电容的能量更快走掉,使总线迅速进入隐性状态,从而增强系统的抗干扰性能

       2)提升信号质量:通过消除阻抗不连续和不匹配问题,让反射能量降低,终端电阻有助于提升整个总线的信号质量。


       线缆的一端接方波发生器,另一端接一个可调电阻,并通过示波器观察电阻上的波形。调整电阻阻值的大小,直到电阻上的信号是一个良好的无振铃的方波,此时的电阻值可以认为与线缆的特征阻抗一致。


       总线差分逻辑


CAN总线上的数据采用两种互补的逻辑值,即显性和隐性两种状态,显性代表逻辑0显性电平指的是CANH和CANL之间的电压差为 1.5V 到 3V,隐性代表逻辑1,隐性电平指的是CANH和CANL之间的电压差为 -0.5V 到 0.05V

CAN控制器输出输出逻辑电平后,由外部CAN收发器转换为适合CAN总线的差分信号。