4. Tc2_Utilities

4.22. TwinCAT 3如何使用Hash算法进行数据加密

Hash算法是一个广义的算法,也可以认为是一类算法,它的作用是把任意长度的输入通过哈希算法变换成固定长度的输出,该输出就是哈希值。这种将数据的格式固定下来的算法可以用做数字签名来保障数据传递的安全性。

函数库支持的哈希算法及哈希值需要的内存大小:

哈希算法

结果大小

HASH_MD5

16 bytes

HASH_SHA1

20 bytes

HASH_SHA256

32 bytes

HASH_SHA384

48 bytes

HASH_SHA512        

64 bytes


使用范例:


需要特别注意的是:

在对字符串类型的变量进行Hash计算时,应使用Len函数计算字符串的长度并作为Hash计算的nData的参数输入,原因在于内存中处理字符串数据时,仅会对当前输入的字符串长度的内存数据进行修改,而超过当前输入长度的内存区域不做变更。

例:首先将sPassword变量写入字符串’12345’>内存中记录为”31 32 33 34 35 00”,随后将sPassword的值修改为’321’>此时内存中记录为”33 32 31 00 35 00”。所以如果在对字符串进行Hash计算时使用Sizeof,容易出现字符串在内存中未完全覆盖写入导致Hash结果出现偏差。


参考资料:https://infosys.beckhoff.com/content/1033/tcplclib_tc2_utilities/12674358283.html


2025.3.31 云龙 供稿