查看: 1275|回复: 1

[MicroPython] ESP32 MicroPython教程:使用SHA-256

[复制链接]

本micropython 教程的目的是解释如何在esp32上使用 sha-256 算法与 micropython 一起使用该模块。


介绍

本 micropython 教程的目的是解释如何在esp32上使用 SHA-256 算法与 micropython 一起使用该模块。
我们将使用一个来自 hashlib的模块(https://github.com/micropython/micropython-lib/tree/master/hashlib), 该模块实现了 SHA-256 hash算法。你可以在这里(https://www.vocal.com/cryptography/sha-algorithm/)阅读更多关于 SHA 的信息。


安装库

本文撰写之际,MicroPython二进制版本的默认配置并不包括此库。因此,我们需要进行手动安装。但请注意,此处使用的安装方式是将模块复制到我们的文件系统再从系统导入该模块以启用命令行环境中的函数。
因此,我们首先要将模块复制到MicroPython文件系统上。你可以在此处获取SHA-256库的源代码(https://github.com/micropython/micropython-lib/blob/master/hashlib/hashlib/sha256.py)。最简单的方法是转到GitHub的原始视图(https://raw.githubusercontent.com/micropython/micropython-lib/master/hashlib/hashlib/sha256.py),复制整个代码,再将其保存到计算机里的sha256.py文件中。
为确认不存在其他模块依赖关系,你可以在文件里按快捷键“Ctrl + F”来搜索关键字“import”。应查找不到任何结果。
现在,我们要将文件上传到文件系统。为此,我们需要用到一个名为ampy(https://learn.adafruit.com/micropython-basics-load-files-and-run-code/install-ampy)的Python工具。你可以参阅这篇之前的教程:ESP32/ESP8266 MicroPython教程:将文件上传到文件系统,其详细说明了如何安装ampy以及如何通过该软件将文件上传至MicroPython的文件系统。
接下来,将ESP32开发板连接到计算机,打开命令行并导航到之前保存sha256.py文件的目录。在该目录下,只需将COM5更改为开发板连接串口并点击以下命令即可:


[AppleScript] 纯文本查看 复制代码
1   ampy --port COM5 put sha256.py


该文件现在应该已经上传到你的开发板文件系统了。由于文件较大,上传可能需要一段时间。

测试库

要测试此库,只需借助Putty(https://www.putty.org/)之类的程序连接到Python提示符。建立连接后,我们将通过发送以下命令确认我们的文件系统里存有该文件:

[AppleScript] 纯文本查看 复制代码
1  import os

2  os.listdir()

如图1所示,该库已存入文件系统。就我而言,我还有其他项目的文件。

Figure 1 – Sha256.py module on MicroPython’s file system..png

图1 – MicroPython文件系统中的Sha256.py模块。

现在,我们将测试该模块的功能性。首先,使用如下所示的命令导入该模块。

[AppleScript] 纯文本查看 复制代码
1  import sha256

然后,创建sha256类的对象,将包含我们想要散列的内容的字符串作为输入值传递。此处将用到一个简单的测试字符串,如以下代码所示。

[AppleScript] 纯文本查看 复制代码
1  testString = "String to hash with sha256"
2  hashObject = sha256.sha256(testString)



最后,调用hexdigest方法来获取字符串的散列值。此方法不接收任何参数。

[AppleScript] 纯文本查看 复制代码
1   hash = hashObject.hexdigest()
2   print(hash)

你应该会得到与图2所示结果类似的输出结果。

Figure 2 – Result of the program..png
图2 – 程序结果。

我们可以借助这个网站(http://www.xorbin.com/tools/sha256-hash-calculator)来确认散列的结果是否与将SHA-256算法应用于字符串的预期结果相符。图3显示了我们在Python代码中使用的字符串的结果。

Figure 3 – Applying the SHA-256 algorithm to the string defined in the MicroPyt.png
图3  - 将SHA-256算法应用于MicroPyton代码中定义的字符串。

我们可以从该验证网站复制内容并将其粘贴到一个字符串中,然后比较该字符串与我们的散列字符串,从而检验MicroPython中的结果是否无误(如图4所示)。返回结果应为“True”,表明两者内容匹配。

Figure 4 – Matching comparison between the hash created on MicroPython and on t.png

图4 – 匹配比较MicroPython和验证网站上的散列值。

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。

查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程 汇总贴
英文版教程 :(ESP32 tutorial

gada888  版主

发表于 2018-12-12 11:42:28

收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail