SD卡怎么加密和解密

2025-12-14 14:06:57
推荐回答(2个)
回答1:

SD卡具有安全加密功能,内置128bit加密位,在加密状态下,用户需提供密码才可以访问卡内的数据。
在卡上电时,若卡包含密码,卡自动进入锁定状态,读写命令均返回错误,以保护卡内容不被读出及修改。
密码设置功能由CMD42实现,其数据包中包括该命令中所有的信息。
Byte
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0
Erase
Card
Lock/UnLock
ClrPwd
SetPwd
1
Psw_Length
2
Pwd
Data
PwdLen+1
擦除:此位置1时,卡的密码和内容会被强制擦除,在遗忘密码时可使用此功能。
锁定/解锁:此位置1时,表示命令结束后状态为锁定,为0,表示卡解锁。
清除密码:此位置1,表示清除卡的旧密码,此时数据中必须包含旧密码的正确内容。
加密:此位置1,表示设置卡的新密码,数据中必须包含新密码内容;更改密码时,新密码紧跟随旧密码内容。
注:在CMD42命令之前,首先要使卡工作在传输状态,在SD模式下可使用CMD7进行状态转换,在SPI模式下,可使用初始化序列进行状态切换。
在任意刻,主机可以通过CMD13命令读取卡的内部状态,判断其锁定状态。定义如下:
[if
!vml]
图略
[endif]
bit0置1表示卡处于锁定状态。
1、设置密码
使用CMD16设置Block长度为密码长度为PWD_LEN+2;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x01,LEN,CMD_DATA0,CMD_DATA1……,0xFF,0xFF;
使用CMD16恢复原Block长度。
2、清除密码
使用CMD16设置Block长度为PWD_LEN+2;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x02,LEN,CMD_DATA0,CMD_DATA1……,0xFF,0xFF;
使用CMD16恢复原Block长度。
3、卡的锁定、解锁
使用CMD16设置Block长度为PWD_LEN+2;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x04,LEN,密码[LEN]……,0xFF,0xFF;
使用CMD16恢复原Block长度。
4、修改密码
使用CMD16设置Block长度为OLD_PWD_LEN+NEW_PWD_LEN+2;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x05,LEN,旧密码[n],新密码[m]……,0xFF,0xFF;
使用CMD16恢复原Block长度。
5、卡擦除
使用CMD16设置Block长度为1;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x08,0xFF,0xFF;
使用CMD16恢复原Block长度。
完整版见参考资料:闪存之家

回答2:

加密
1、点击打开手机中的设置按钮;
2、在设定中找到安全选项;
3、在安全设置中点击sd卡加密;
4、根据自己的情况点击继续,然后输入密码。点击下一步,这里用户需要注意的是,密码为1位英文字母和6个数字组成;
5、操作完毕,会提示启用sd卡加密,用户点击应用完成,确定即可操作!
sd卡解密操作:
解密操作分为两种情况,一种为记得sd卡密码。
那么用户点击开打开文件管理,→选项→设置→密码设置→输入密码→更改密码就ok
了!
一种情况为忘记密码,那么用户只能通过软件解锁,或者手机进行格式化了!