查看完整版本: HCS12单片机加密及解密的方式方法

liyf 发表于 2013-9-27 07:30:20

HCS12单片机加密及解密的方式方法

      在HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码的加密。这两种加密的方法根据用户的需求,使用的场合也有所不同。
         完全加密:所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作。在MC9S12DP256单片机中,加密是通过对某一Flash单元($FF0F)编程来实现的。加密后的芯片,bDM编程器对Flash的读操作就被禁止了采用完全加密,读取ROM代码的可能性就不存在了,这是一种最为“安全”的加密方法。如果用户想修改ROM的内容,唯一的办法就是将Flash的内容全部擦除,这一操作可以通过bDM编程器来完成。使用bDM编程器擦除Flash ROM和EEPROM的过程与在普通模式下对片内的Flash ROM擦除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由bDM命令来实现。通过bDM编程器将一连串完整的擦除指令序列送给单片机,就可将Flash ROM和EEPROM的内容全部擦除了。   
      在全擦除操作完成后,bDM编程器将系统复位,系统会自动检查全擦除操作是否成功。如果成功,bDM状态寄存器的UNSEC位会自动置“1”,系统进入解密状态。由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。
const volatile unsigned char SecureReg @(0xFF0F)=0xFC;(注意VOLATILE字样,如果没有的话,可能被DUbUG掉)
      使用密码的加密:为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。 使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。   
解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用bDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。
       假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:
程序返回后,如果用户输入的密码和原值符合,系统将会把保密寄存器FSEC的最后两位SEC改写到未加密的状态,系统自动解密。如果验证没有通过,系统将保持加密状态。

qiujiefu3 发表于 2024-6-19 19:10:19

感谢分享 楼主NB
页: [1]
查看完整版本: HCS12单片机加密及解密的方式方法