目前SD卡在数码产品中的应用是越来越广泛,用户对SD卡的资料存贮隐私保护越来越重视。但如何安全方便的保护数据资料呢?在网上查阅了大量资料,发现少之又少。后来朋友买了一个诺基亚的手机也带SD卡加锁功能,SD加锁之后无法用读卡器识别,也不能被电脑格式化,对普通用户来讲已经是非常安全了。我仔细查阅了SD卡的相关技术资料后,终于明白了SD卡加密的技术实现思路。原来SD卡有专门的加密加锁操作方式,通过SPI访问方式发加密命令字,就可以实现加密功能,加密之后,SD卡在上电的过程中如果没有密码,就会无法访问该SD卡。这也是SD卡之所以被称为“安全数字卡”的原因之一。
研究了几天,终于实现了SD卡加解锁功能!主要注意几点:
1 密码长度Pwd_len要包含新/旧密码长度,还有顺序不能错;
2 传cmd42的时候要同时将参数传进去,如0X05;
3 加锁之前要用cmd16设数据块长度,数据块长度不是SPEC上说的一定是512字节,只要大于密码数据区的长度就好,最后要恢复到512就可以了;
4设完之后可以得到0xe5的响应,表示数据已经接受,用CMD13可以读SD状态得到LOCK标志位已置位,为0X01