linux文件完整性校验-md5-sha256

linux文件完整性校验

md5校验

kongcb@tcu-Lenovo:/lib$ md5sum -b libTaskDB.so > libTaskDB.so.md5
kongcb@tcu-Lenovo:/lib$ ls
libTaskDB.so  libTaskDB.so.md5
kongcb@tcu-Lenovo:/lib$ md5sum -c libTaskDB.so.md5 
libTaskDB.so: OK
kongcb@tcu-Lenovo:/lib$ echo $?
0

描述:通过md5sum 对二进制文件libTaskDb.so算md5值,并将值存储在libTaskDb.so.md5文件中,校验文件的时候,使用md5sum -c libTaskDb.so.md5来校验文件,校验成功,返回0,否则返回1
另外:libTaskDB.so是binary我们是知道的,如果不知道,可以使用file命令查看
kongcb@tcu-Lenovo:/lib$ file libTaskDB.so
libTaskDB.so: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped
kongcb@tcu-Lenovo:/lib$ file libTaskDB.so.md5 
libTaskDB.so.md5: ASCII text
如果是ASCII格式,需要使用 md5sum -t libTaskDB.so > libTaskDB.so.md5

其他校验方式

其他校验方式类似md5了,如sha256,执行如下:
kongcb@tcu-Lenovo:/lib$ sha256sum -b libTaskDB.so > libTaskDB.so.sha256
kongcb@tcu-Lenovo:/lib$ ls
libTaskDB.so  libTaskDB.so.md5  libTaskDB.so.sha256
kongcb@tcu-Lenovo:/lib$ sha256sum -c libTaskDB.so.sha256 
libTaskDB.so: OK

//对于sha512校验,执行如下:
kongcb@tcu-Lenovo:/lib$ sha512sum -b libTaskDB.so > libTaskDB.so.sha512
kongcb@tcu-Lenovo:/lib$ ls
libTaskDB.so  libTaskDB.so.md5  libTaskDB.so.sha256  libTaskDB.so.sha512
kongcb@tcu-Lenovo:/lib$ sha512sum -c libTaskDB.so.sha512 
libTaskDB.so: OK

SD文件校验

我们A8和imx的板子升级程序,都使用SD卡升级,如果SD卡没有校验的话,其他人都可以将系统拷贝到其他SD卡上,使用到一样的硬件上,而如果使用校验就可以避免这个,方法如下:
1:获取SD序列号
[root@tcu /mnt/app]$ cat /sys/devices/platform/ocp/48060000.mmc/mmc_host/mmc0/mm
c0\:1234/cid
02544d53413038472144bfc41700f955
也可以通过通配符获取:
[root@tcu /mnt/app]$ cat /sys/devices/platform/ocp/*.mmc/mmc_host/mmc0/mmc0:*/cid > sdNo
如上,将获取的到cid发送给sdNo文件

2:计算序列号的sha文件
[root@tcu /mnt/app]$ sha256sum -b sdNo > .sdNo.haha
//注意:此处特意将sha文件修改为隐藏的,且后缀看不出算法

3:验证
[root@tcu /mnt/app]$ sha256sum -c .sdNo.haha
sdNo: OK

注:sd卡的CID信息,主要包括:
typedef struct
{
uint8 ManufacturerID; // 生产标识ID
uint16 OEM_AppliID; // OEM/应用 ID
uint32 ProdName1; // 产品名称1
uint8 ProdName2; // 产品名称2
uint8 ProdRev; // 产品版本
uint32 ProdSN; // 产品序号
uint8 Reserved1; // 保留
uint16 ManufactDate; // 生产日期
uint8 CID_CRC; // CID CRC
uint8 Reserved2; // always 1
} SD_CID;

你可能感兴趣的:(linux,系统操作,linux,运维)