67浏览
查看: 67|回复: 2

[项目] 【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密

[复制链接]
【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图1

什么是 CanMV K230?
CanMV K230是一款高性价比的RISC-V边缘AI平台,凭借低功耗、强视觉处理能力和开放的开发生态,成为嵌入式AI开发的理想选择,尤其适合需要快速部署视觉与AI功能的创客、中小企业及教育场景。CanMV 是一套 AI 视觉开发平台,K230 是其核心芯片。该模块结合了图像采集、AI推理、边缘计算等能力,适合嵌入式视觉应用开发。

CanMV:类似 OpenMV 的图像处理框架,支持 Python 编程,简化视觉识别开发流程。
K230 芯片:嘉楠科技推出的 AIoT SoC,采用 RISC-V 架构,内置第三代 KPU(AI加速单元),算力高达 6 TOPS,性能是 K210 的 13.7 倍。

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图2

驴友花雕  高级技神
 楼主|

发表于 2025-11-4 07:38:48

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密

知识点
SHA256 是目前应用最广泛的哈希算法之一,并非传统意义上的 “加密”,而是一种密码学哈希函数。

它的核心作用是将任意长度的输入数据,通过特定计算,生成一个固定长度(256 位,即 64 个十六进制字符)的输出,这个输出被称为哈希值或消息摘要。

SHA256 的核心特性
1. 固定输出长度:无论输入是 1 个字节的文本,还是 1GB 的文件,输出的哈希值永远是 64 个十六进制字符。
2. 不可逆性:只能从输入计算出哈希值,无法通过哈希值反推回原始输入,这是它与 “加密”(可解密)最本质的区别。
3. 抗碰撞性:极难找到两个不同的输入,使其计算出的哈希值完全相同,这保证了数据的唯一性验证。

SHA256 的主要应用场景
• 数据完整性校验:下载文件时,对比本地计算的哈希值与官方提供的哈希值,可确认文件是否被篡改或损坏。
• 密码存储:网站不会直接存储用户密码,而是存储密码的 SHA256 哈希值,即使数据库泄露,攻击者也无法直接获取原始密码。
• 数字签名:结合非对称加密,对数据的哈希值进行签名,可验证数据来源的真实性和完整性。

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图3

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图1

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2025-11-4 07:43:21

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密

本帖最后由 驴友花雕 于 2025-11-4 07:47 编辑

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密
项目测试实验代码

  1. #【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密
  2. # 导入 hashlib 模块,用于提供 SHA-256 哈希功能
  3. import hashlib
  4. # 第一部分:分步更新哈希对象
  5. # 创建一个包含65个零字节的字节数组
  6. a = bytes([0] * 65)
  7. # 创建一个 SHA-256 哈希对象
  8. b = hashlib.sha256()
  9. # 更新哈希对象,使用字节数组 a 进行两次更新
  10. # 相当于对130个零字节(65+65)进行哈希计算
  11. b.update(a)
  12. b.update(a)
  13. # 获取最终的哈希值(二进制格式)
  14. c = b.digest()
  15. # 打印哈希值
  16. print(c)
  17. # 检查哈希值是否与预期值相同
  18. if c != b"\xe5Z\\'sj\x87a\xc8\xe9j\xce\xc0r\x10#%\xe0\x8c\xb2\xd0\xdb\xb4\xd4p,\xfe8\xf8\xab\x07\t":
  19.     # 如果不相同,则抛出异常并打印当前哈希值
  20.     raise(Exception("error! {}".format(c)))
  21. # 第二部分:一次性计算哈希值
  22. # 创建一个包含1024个零字节的字节数组
  23. a = bytes([0] * 1024)
  24. # 使用字节数组 a 创建一个新的 SHA-256 哈希对象
  25. # 这种方式会直接计算整个数据的哈希值
  26. b = hashlib.sha256(a)
  27. # 获取新的哈希值
  28. c = b.digest()
  29. # 打印新的哈希值
  30. print(c)
  31. # 检查新的哈希值是否与预期值相同
  32. if c != b'_p\xbf\x18\xa0\x86\x00p\x16\xe9H\xb0J\xed;\x82\x10:6\xbe\xa4\x17U\xb6\xcd\xdf\xaf\x10\xac\xe3\xc6\xef':
  33.     # 如果不相同,则抛出异常并打印当前哈希值
  34.     raise(Exception("error! {}".format(c)))
复制代码


代码要点说明
创建哈希对象的两种方式:

先创建空对象,然后用 update() 方法添加数据
创建对象时直接传入数据
增量哈希:

代码中第一部分展示了 update() 方法的使用,可以多次调用来添加数据
这相当于计算连接在一起的数据的哈希值 (即 130 个零字节)
哈希结果获取:

digest() 方法返回二进制格式的哈希值
也可以使用 hexdigest() 获取十六进制字符串表示
哈希验证:

代码通过比较生成的哈希值与预期值来确保算法实现正确
展示了SHA256算法的确定性特性(相同输入总是产生相同输出)
输入大小与哈希值:

无论输入数据大小如何(65个字节、130个字节或1024个字节),输出始终是32字节
SHA256虽然强大,但在某些安全场景下(如密码存储)应该与其他技术如加盐、密钥拉伸等结合使用。




实验串口返回情况
【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图1

【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密图2

回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

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

mail