利用STM32的唯一ID编码来加密
最近在网上看到了利用STM32的ID编码结合来进行产品加密,觉得挺好的,拿来分享下:产品唯一的身份标识非常适合:
● 用来作为序列号(例如USB字符序列号或者其他的终端应用)
● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
● 用来激活带安全机制的自举过程
96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。
这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。
基地址:0x1FFF F7E8
每个CPU 出厂的时候都
配置的一个ID,96 位的.这个唯一码可以利用作软件加密.......
static u32 CpuID;
static u32 Lock_Code;
void GetLockCode(void)
{
//获取CPU唯一ID
CpuID=*(vu32*)(0x1ffff7e8);
CpuID=*(vu32*)(0x1ffff7ec);
CpuID=*(vu32*)(0x1ffff7f0);
//加密算法,很简单的加密算法
Lock_Code=(CpuID>>1)+(CpuID>>2)+(CpuID>>3);
}
不错,多谢楼主分享啊,学习了:):) mark 6666 对头我们就这么用的 很好的东西,尽管这个方法很古老了 笨熊 发表于 2014-12-8 10:29
很好的东西,尽管这个方法很古老了
那最新的办法是哪个 这个赞,把96位CPUID变成32位的密钥,这样CPUID和32为密钥就一一对应了 我刚试了一下,怎么我的机都是“FFFFFFFFFFFFF.."? 我用STM32F429-iDisco 不知道RM0090中的加密处理器 (CRYP)对这个有没有帮助?