ESP32 MicroPython教程:使用SHA-256-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4379|回复: 0

ESP32 MicroPython教程:使用SHA-256

[复制链接]
发表于 2018-12-14 14:10 | 显示全部楼层 |阅读模式
本帖最后由 dfrobot 于 2018-12-14 14:39 编辑

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

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


安装库

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

[mw_shl_code=applescript,true]1   ampy --port COM5 put sha256.py[/mw_shl_code]

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

测试库

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

[mw_shl_code=applescript,true]1  import os

2  os.listdir()[/mw_shl_code]


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

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

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


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


[mw_shl_code=applescript,true]1  import sha256[/mw_shl_code]

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


[mw_shl_code=applescript,true]
1  testString = "String to hash with sha256"
2  hashObject = sha256.sha256(testString)[/mw_shl_code]


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


[mw_shl_code=applescript,true]1   hash = hashObject.hexdigest()
2   print(hash)[/mw_shl_code]


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


Figure 2 – Result of the program..png

2 – 程序结果。



我们可以借助这个网站来确认散列的结果是否与将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

sketch_oct18a.zip

1.71 KB, 下载次数: 8

地球小灯模型.rar

461.56 KB, 下载次数: 2

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:01 , Processed in 0.144617 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表