Flash型单片机的加密与解密的方法
[09-14 10:28:14] 来源:http://www.88dzw.com 维修经验技巧 阅读:8429次
文章摘要:由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。·使用密码的加密为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。解密时,接受用户输入的密码并验证的工作只能由一个用户接口程
Flash型单片机的加密与解密的方法,标签:维修技巧,http://www.88dzw.com由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。
·使用密码的加密为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。
使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。
解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用BDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。
假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:
;******************
;* TEST KEYS
;******************
TESTKEYS
BSET FCNFG,$20 ;置KEYACC为1
LDD KEY0
STD $FF00
LDD KEY2
STD $FF02
LDD KEY4
STD $FF04
LDD KEY6
STD $FF06 ;验证KEY0-KEY7
BCLR FCNFG,$20 ;清KEYACC为0
LDAA FSEC
ANDA #$03
CMPA #$02
BNE FAIL ; 是否验证成功?
SUCCESS ; 密码验证成功
LDAA FSTAT ; 清除Flash状态寄存器
ORAA #%00110000
STAA FSTAT
LDAA #0
STAA FCNFG
BRCLR FSTAT,$80,*
LDD #$FFFE
STD $FF0E ; 改写加密状态,复位后系统不再加密
LDAA #$20
STAA FCMD
BSET FSTAT,#$80 ; 开始执行
BRCLR FSTAT,$40,*
RTS ; 返回
FAIL RTS
程序返回后,如果用户输入的密码和原值符合,系统将会把保密寄存器FSEC的最后两位SEC[1:0]改写到未加密的状态,系统自动解密。如果验证没有通过,系统将保持加密状态。
需要注意,不管使用哪种方式将系统解密,解密后的系统虽然可以暂时读取Flash,但是由于单元$FF0F中的最后两位仍处于加密状态(全擦除后,“11”的组合仍为加密状态),系统在下次复位后,仍会回到加密的状态,所以为了彻底解密系统,必须改写这两位为“10”。
- 上一篇:UPS设计时应注意的事项
《Flash型单片机的加密与解密的方法》相关文章
- › 如何在幻灯片中插入Flash 动画
- › 进入BIOS时 提示"unknown flash type , system halt "
- › 如何用手机玩Flash
- › Flash型单片机的加密与解密的方法
- › 一种在片上系统中实现Nand Flash控制器的方法
- › 支持Flash的单板计算机嵌入式系统
- 在百度中搜索相关文章:Flash型单片机的加密与解密的方法
- 在谷歌中搜索相关文章:Flash型单片机的加密与解密的方法
- 在soso中搜索相关文章:Flash型单片机的加密与解密的方法
- 在搜狗中搜索相关文章:Flash型单片机的加密与解密的方法