找回密码
 立即注册
查看: 1560|回复: 3

如何利用STC8H8K64U的ID进行程序加密

[复制链接]

2

主题

0

回帖

34

积分

新手上路

积分
34
发表于 2023-3-20 22:07:27 | 显示全部楼层 |阅读模式
楼主和各位大咖晚上好!这里主要是想利用STC8H8K64U的ID对程序加密,但目前还没有一个具体思路,烦请大家给与指教,谢谢!
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-3-20 22:36:04 | 显示全部楼层
1.png


ID号加密是根据用户所设定的算法对ID号的7个字节进行分别运算,每种加密算法最多可以进行4次
不同的运算,运算符不分优先级,从前到后依次进行4次运算,对于同一个加密算法,ID号的7个字节是
分别使用此算法进行运算,运算完成后会得到加密后的7个字节,在下载用户代码时,加密后的7个字节
会自动写入到用户所指定的FLASH中
例如:
  当前芯片内部的ID号为 : 01H 02H 03H 04H 05H 06
H 07H
  选择的加密算法为         : <<1, +2, *3, ^4
  设定的存储地址为         : 0x1000
  经加密运算后的ID号为  :  08H 16H 1CH 1AH 20H 2EH 34H
  下载程序过程中,加密的ID号会被写入到FLASH的0x1000~0x1006地址中
  08H写入到0x1000, 16H写入到0x1001, 1CH写入到0x1002, 1AH写入到0x1003, 20H写入到0x1004,
  2EH写入到0x1005, 34H写入到0x1006

目前版本提供两种加密方式,可将ID号使用两种不同的方式加密后写入到不同的地址中每种加密方式
中可进行4步运算,每一步运算可选择下面的7种运算方法:
+ : 加法运算  - : 减法运算  * : 乘法运算  / : 除法运算  
<<: 左移运算  >>: 右移运算  ^ : 异或运算

对于运算操作数,只接受10进制数的输入,有效的数据为0~255,超出范围的数,高位会被自动舍弃.
例如输入257(102H),则实际参加运算的术为2(02H)
所有的运算都是基于单字节的,高低字节之间不会产生进位和借位,即低字节运算后如果产生进位
或借位将直接舍弃,而不参与高字节的运算

例如:
  如果ID号为       : 01 02 03 04 ff fe fd
  加密方式为       : "+255, +0, +0, +0"
  则加密后的数据为 : 00 01 02 03 fe fd fc

注意事项:
  若是将ID号加密和程序加密后传输这两种功能结合起来同时使用时,则必须在原代码加密前,将需
  要写入加密ID号的地址空间预留为FF,然后在对程序文件进行加密(若下载时需要将HEX空白区域
  填充为00时,也需要执行此操作将区域保留)
  例如:
    我现在需要将ID号加密后写入到程序空间1000H开始的地址,那么我必须在我的源代码中,
    将1000H~1006H这7个字节保留,并定义为FFH(不能为00H)
2.png
1.png
2.png
  • 打卡等级:以坛为家I
  • 打卡总天数:288
  • 最近打卡:2025-05-02 15:37:40

0

主题

52

回帖

1284

积分

金牌会员

积分
1284
发表于 2023-4-1 16:06:07 | 显示全部楼层
神*** 发表于 2023-3-20 22:36
ID号加密是根据用户所设定的算法对ID号的7个字节进行分别运算,每种加密算法最多可以进行4次
不同的运算, ...

如果自定义了EEPROM大小,ID号该如何读取,地址会随着EEPROM大小改变吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-4-1 16:30:49 | 显示全部楼层
STC8H8K64U的CHIPID是只读特殊功能寄存器, 跟EEPROM/FLASH 无关
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 00:53 , Processed in 0.146181 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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