Siemens PLC S7-1500 AES 加,解密算法
高级加密标准(AES,中文又称为Rijndael加密法),一个在密码学中广泛应用的算法,其完整代码可以在互联网上找到。基于对PLC数据的保护需要,我们构建了Step7的AES加密解密算法模块,分别命名为AES(加密)和DAES(解密)。经过初步调试和算法优化,该模块已在CPU1516上运行,并在运行时间小于200微秒的条件下表现出优越性能。如有商业合作需求,请联系本人。
AES算法模块具有以下特点:
1. 高效运行,能够满足实时任务的需要;
2. 允许用户自定义密钥;
3. 与.NET和其它计算机算法整合兼容;
4. 支持字符替换表的重新定义;
5. 充分利用TIA的保密机制,表现出较高安全性(除非TIA的保密机制被破解);
6. 在多个型号CPU如CPU1510SP1 PN、CPU15111 PN和6ES7 5163AN000AB0上实际运行。
由于加密算法过程的公开性,加解密共享同一个密钥,泄露密钥(key)即意味着原始数据的泄露。因此,为了确保密钥不被泄露,不能让密钥位于接口或背景数据中。处理密钥的方法如下:
等值写入特定的FC/FB块,随后对整个FC/FB进行加密处理;
AES加密示例:
```plaintext
AES 数据处理 16个块
// AES 加密数据处理
FOR i := 0 TO 3 DO
FOR j := 0 TO 3 DO
Carry[i, j] := SBuffer[i 4 + j];
END_FOR;
END_FOR
// 设定 Key
Key[0] := 1601;
Key[1] := 1606;
Key[2] := 1630;
Key[3] := 1643;
Key[4] := 1656;
Key[5] := 1627;
Key[6] := 1645;
Key[7] := 1644;
Key[8] := 1651;
Key[9] := 1679;
Key[10] := 16AF;
Key[11] := 1604;
Key[12] := 168A;
Key[13] := 166F;
Key[14] := 1699;
Key[15] := 1621;
```
该模块已在多个型号CPU上实际应用,包括CPU1510SP1 PN、CPU15111 PN、6ES7 5163AN000AB0等,具备多场景兼容性和高度安全性。