回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

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

头像 驴友花雕 2025.11.04 4 0

00 (3).jpg

 

什么是 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 倍。

 

00 (4).jpg

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

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

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

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

 

01.jpg
02.jpg
03.jpg

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

 

代码
#【花雕动手做】CanMV K230 AI视觉识别模块之使用SHA256加密
# 导入 hashlib 模块,用于提供 SHA-256 哈希功能
import hashlib

# 第一部分:分步更新哈希对象
# 创建一个包含65个零字节的字节数组
a = bytes([0] * 65)

# 创建一个 SHA-256 哈希对象
b = hashlib.sha256()

# 更新哈希对象,使用字节数组 a 进行两次更新
# 相当于对130个零字节(65+65)进行哈希计算
b.update(a)
b.update(a)

# 获取最终的哈希值(二进制格式)
c = b.digest()

# 打印哈希值
print(c)

# 检查哈希值是否与预期值相同
if c != b"\xe5Z\\'sj\x87a\xc8\xe9j\xce\xc0r\x10#%\xe0\x8c\xb2\xd0\xdb\xb4\xd4p,\xfe8\xf8\xab\x07\t":
    # 如果不相同,则抛出异常并打印当前哈希值
    raise(Exception("error! {}".format(c)))

# 第二部分:一次性计算哈希值
# 创建一个包含1024个零字节的字节数组
a = bytes([0] * 1024)

# 使用字节数组 a 创建一个新的 SHA-256 哈希对象
# 这种方式会直接计算整个数据的哈希值
b = hashlib.sha256(a)

# 获取新的哈希值
c = b.digest()

# 打印新的哈希值
print(c)

# 检查新的哈希值是否与预期值相同
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':
    # 如果不相同,则抛出异常并打印当前哈希值
    raise(Exception("error! {}".format(c)))

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

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

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

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

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

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

 

实验串口返回情况

 

03-.jpg
04.jpg

评论

user-avatar
icon 他的勋章
    展开更多