发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印

1.3元单片机实现动态密码移动收件箱 售货箱

[复制链接]
1290|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 topofhill 于 2022-3-23 15:54 编辑

#申请原创#


一  工作原理

每条云数据库记录对应一个单片机,保存同样的随机数组和函数,同步累加计算的序列,任何时候可以得到同样的动态密码.



二  优势对比

1.成本廉价
2.任意移动
电池供电,可任意移动或存放.
3.任意形状
一个sop8芯片加开关管电路,体积小,适合装配成任意外观设备,可以适应社会任意环境.
3.非联网验证
物品联网验证,会涉及通讯稳定性和安全性。一些拦截,屏蔽,伪造,**等,攻击手段可用。
且通信费,硬件成本高。而非联网验证只会有**一种方法攻击,加强密码算法,和联合验证码验证。可以更简单更廉价更安全第地实现用户快捷验证。

4.用户信息安全
使用用户  微信openid   定购产品到收货箱,配送到用户附近街道,发送动态密码给用户微信.全程不获取用户手机号及地址信息完成配送。



可以应用于动态密码移动收件箱 售货箱,无人值守门禁系统,或其它非联网须认证设备.
三 实例解析
单通道箱,内控芯片,我使用的是1.3元的stc8g1k08  sop8,它的内存足够几百组随机数和几十条运算函数.程序很简单,就是核对外部过来的密码是否和自己生成的一样.相同则控制开关管开锁,不同则返回错误信息.外部手

柄.我使用2.3元stc8g1k08  sop16.加上几毛的语音芯片,喇叭,电池,触摸延时电源管理.共十几元.手柄和内控

通过Type-c接口通信和为内控供电.手柄主要负责密码累积,够6位后传入内控判断.播报密码输入语音.播报开

锁状态.控制指示灯,管理电源休眠省电.当然也可以使用红外通信,或底座供电手机nfc碰碰直接开锁.



单片机部分代码

void suan()
{    uint h1,h2,h3,x1,x2,x3;
uint t,i,xu,han;
for(t=0;t<50;t++){Jielong[t]=IapReadByte

(0x0400+t);}
if(Dao==1) {if(Jielong[6]!=2){x1=a1[1];x2=a2[1];x3=a3[1];xu=1;}else{x1=Jielong[0];

x2=Jielong[1];x3=Jielong[2];xu=Jielong[3]*100+Jielong[4]*10+Jielong[5];}}
if(Dao==2) {if(Jielong

[13]!=2) {x1=a1[2];x2=a2[2];x3=a3[2];xu=1;}else{
x1=Jielong[7]; x2=Jielong[8];x3=Jielong

[9];xu=Jielong[10]*100+Jielong[11]*10+Jielong[12];}}
if(Dao==3) { if(Jielong[20]!=2) { x1=a1

[3];x2=a2[3];x3=a3[3];xu=1;    } else{    x1=Jielong[14];x2=Jielong[15];x3=Jielong

[16];xu=Jielong[17]*100+Jielong[18]*10+Jielong[19];}}
if(Dao==4) { if(Jielong[27]!=2){x1=a1

[4];x2=a2[4];x3=a3[4];xu=1; }else{x1=Jielong[21];x2=Jielong[22];x3=Jielong[23];xu=Jielong[24]

*100+Jielong[25]*10+Jielong[26];}}
if(Dao==5) { if(Jielong[34]!=2) {x1=a1[5];x2=a2[5];x3=a3

[5];xu=1; } else{x1=Jielong[28]; x2=Jielong[29];x3=Jielong[30];xu=Jielong[31]*100+Jielong[32]

*10+Jielong[33];} }
if(Dao==6) { if(Jielong[41]!=2) {x1=a1[6];x2=a2[6];x3=a3[6];xu=1; } else

{x1=Jielong[35];x2=Jielong[36];x3=Jielong[37];xu=Jielong[38]*100+Jielong[39]*10+Jielong[40];} }
if(Dao==7) { if(Jielong[48]!=2) {x1=a1[7];x2=a2[7];x3=a3[7];xu=1; } else{x1=Jielong

[42];x2=Jielong[43];x3=Jielong[44];xu=Jielong[45]*100+Jielong[46]*10+Jielong[47];} }
han=(xu

+x1)%10;
if(han<2) {
data_c=a8[x2]*132307+xu*1+a4[x3]*168+a7[x1]*2+a5[x2]*665+a2[x2]*524+a6[x3]

*364+a3[x2]*257+a8[x3]*231+a5[x1]*275+a6[x2]*9+a1[x2]*37+a8[x2]*83+a6[x3]*139+a2[x1]*87;}
if

((han>1)&&(han<4)) {
data_c=a3[x2]*132320+xu*1+a6[x2]*758+a3[x2]*41+a4[x2]*116+a3[x1]*210+a7[x2]

*130+a2[x1]*266+a5[x3]*280+a2[x3]*149+a7[x3]*159+a1[x1]*452+a3[x1]*57+a8[x3]*557+a5[x2]*75;}
if

((han>3)&&(han<6)) {
data_c=a2[x2]*132306+xu*1+a5[x2]*335+a3[x2]*198+a3[x3]*599+a4[x2]*596+a5

[x3]*674+a3[x3]*307+a4[x3]*122+a6[x2]*72+a1[x1]*150+a1[x1]*193+a7[x1]*148+a8[x2]*99+a1[x1]*73;}
if((han>5)&&(han<8)) {
data_c=a8[x3]*132320+xu*1+a8[x2]*105+a5[x2]*238+a3[x2]*642+a1[x2]*485+a4

[x3]*498+a3[x3]*232+a3[x2]*129+a3[x3]*99+a5[x2]*40+a2[x2]*40+a1[x2]*179+a4[x1]*46+a1[x2]*50;}
if

((han>7)&&(han<10)) {
data_c=a7[x1]*132321+xu*1+a8[x2]*410+a6[x2]*333+a8[x2]*808+a5[x3]*526+a7

[x1]*406+a7[x2]*130+a7[x2]*230+a7[x2]*57+a7[x2]*50+a7[x2]*532+a4[x2]*128+a1[x2]*301+a2[x2]*26;}

/***************************改变区域end  *************************/

Lin[0]=data_c%1000000/100000;


Lin[1]=data_c%100000/10000;
Lin[2]=data_c%10000/1000;
Lin[3]=data_c%1000/100;
Lin[4]=data_c%100/10;
Lin[5]=data_c%10;
   // yin6(Lin);     yin6(Ru);


    for(i=0;i<6;)


          {
                        if(Lin==Ru)    //将两次输入的新


   i++;
                        else                        

        //如果两次的密码不同


              {    // N=0;     

                   speak(14);while

(yybuzy==0);
                   if(Dao<10){ speak(Dao+1);while(yybuzy==0);}


          else{    speak(2);while(yybuzy==0);     
                                    speak(Dao

%10+1);while(yybuzy==0);  }
                                  speak(13);while(yybuzy==0);


                     for(t=0;t<6;t++)               

                //将输入清除


        {
                            Ru[t]=0;

                            }  break;


                       }    }        



云数据部分代码

ar zu= new Array(); //定义一数bai组
zu=res.data[0].data.shuzu.split("|"); //字符分割
for (i=0;i<zu.length ;i++ )
{
eval("var a" + i + "=new Array()");
eval("a" + i + "=zu[" + i + "].split(',')");
}
if(wu.dao>0){
    eval("var long=res.data[0].data.jielong" + wu.dao);

console.log("long--"+long);
var Jielong= new Array();

if (long=='1'||long==undefined){
eval("Jielong[0]=Number(a1["+wu.dao+"])");
eval("Jielong[1]=Number(a2["+wu.dao+"])");eval("Jielong[2]=Number(a3["+wu.dao+"])");
xu=1;

if(wu.dao==20){ Jielong[0]=Number(a1[1]);
   Jielong[1]=Number(a1[2]);
   Jielong[2]=Number(a1[3]);}
if(wu.dao==21){ Jielong[0]=Number(a2[1]);
   Jielong[1]=Number(a2[2]);
   Jielong[2]=Number(a2[3]);}
}
else
{
long=long.replace('0', '1');  long=long.replace('0', '1');  long=long.replace('0', '1');  
Jielong[0]=Number(long.toString().substring(0,1));
   Jielong[1]=Number(long.toString().substring(1,2));
   Jielong[2]=Number(long.toString().substring(2,3));
eval("var  xu=res.data[0].data.xu" + wu.dao);
}
  }
console.log("xu--"+xu);
console.log("longzu--"+Jielong);
var yh=Number(xu)+Number(Jielong[0]);
var yha=yh.toString();var yhan=yha.substring(yha.length-1,yha.length);xz
if(yhan<2) {var s=res.data[0].data.han;}

if((yhan>1)&&(yhan<4)) {var s=res.data[0].data.han2;}
if((yhan>3)&&(yhan<6)) {var s=res.data[0].data.han3;}
if((yhan>5)&&(yhan<8)) {var s=res.data[0].data.han4;}
if((yhan>7)&&(yhan<10)) {var s=res.data[0].data.han5;}
eval("s="+s);

console.log(s)  
js批量生成主要语句

var zu= new Array();

for(i=0;i<1500;i++){

b=Number(Math.round(Math.random()*8))+1;
zu=b;
}
五通道和单通道类似,百通道需要窜口扩展,原理都是一样.
四 密码安全
   
没有绝对安全的方法,只有相对安全的算法.
我们可以选取几千位的随机数组,动态地指向数组的几个数,取值固定运算,动态截取一小段,做为新的密码.由于它是截取运算后的,不完整的一个小段,反向推理**是不可能的.设备本身不联网,不存在黑客攻击设备,或
拦截通讯的可能.但是如果**了一片芯片,得到生成随机数组的模板,再加上获取相邻的几个动态密码.动用大

型计算机,猜数组,对比相邻密码的方法.**还是有可能的.如果我们用动态模板呐,用函数变量生成上万的模

板.使每个芯片的数据模板都不一样.让攻击者**了几百个芯片,找不到任何规律,况且他在找规律,获取动态

密码时,我们后台是有记录的.在获取相邻敏感密码时.他的ID会暴露,已经失去了**的意义.


可以添加校验码开锁功能,这个功能只是在序列密码失败时候,校验开锁的一种方法.也可以动态的为数组变身,

在接受到特殊的密码后,数组动态累加变形,也就变成了新的密码锁.当然变形因数,也会同步到云数据库,云数

据同样的累加计算.


**和反**从来都是技术上的一种火拼.在接触算法内核时,你会发现每动一个小小的变量,结果都会大不一

样的.你可以有海量的方法去改进你的加密算法.或可以找到云端和芯片端,共同的哈稀算法.


五  未来

配送权限和开箱权限完全分开。配送员只能移动运输,但不能打开。这样就非常方便“捎”货的配送方式。


用公交车,私家车,个人等任何移动单元,安全“捎”

货,廉价算法“捎”货。综合利用各种运力剩余,对降

低配送费,对社会低炭减排都会有明显效果。任意位置
放置,可以满足客户火车上取出自己定制的食品,景



内提出小吃街的美食,家门口个人公交箱自提超市的任意商品。约定的时间,约定的地点,取出自己需要的商

品.客户随心所物体验.

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2022-03-23
理由:恭喜通过原创文章审核!请多多加油哦!

评论
xfghenan 2022-4-8 11:27 回复TA
好东东 
沙发
vjvj150| | 2022-3-25 01:54 | 只看该作者
电梯直达楼主
topofhill|   楼主 | 2022-3-22 17:35 | 只看该作者 |只看大图

本帖最后由 topofhill 于 2022-3-23 15:54 编辑


#申请原创#


一  工作原理

每条云数据库记录对应一个单片机,保存同样的随机数组和函数,同步累加计算的序列,任何时候可以得到同样的动态密码.



二  优势对比

1.成本廉价
2.任意移动
电池供电,可任意移动或存放.
3.任意形状
一个sop8芯片加开关管电路,体积小,适合装配成任意外观设备,可以适应社会任意环境.
3.非联网验证
物品联网验证,会涉及通讯稳定性和安全性。一些拦截,屏蔽,伪造,**等,攻击手段可用。
且通信费,硬件成本高。而非联网验证只会有**一种方法攻击,加强密码算法,和联合验证码验证。可以更简单更廉价更安全第地实现用户快捷验证。

4.用户信息安全
使用用户  微信openid   定购产品到收货箱,配送到用户附近街道,发送动态密码给用户微信.全程不获取用户手机号及地址信息完成配送。



可以应用于动态密码移动收件箱 售货箱,无人值守门禁系统,或其它非联网须认证设备.
三 实例解析
单通道箱,内控芯片,我使用的是1.3元的stc8g1k08  sop8,它的内存足够几百组随机数和几十条运算函数.程序很简单,就是核对外部过来的密码是否和自己生成的一样.相同则控制开关管开锁,不同则返回错误信息.外部手

柄.我使用2.3元stc8g1k08  sop16.加上几毛的语音芯片,喇叭,电池,触摸延时电源管理.共十几元.手柄和内控

通过Type-c接口通信和为内控供电.手柄主要负责密码累积,够6位后传入内控判断.播报密码输入语音.播报开

锁状态.控制指示灯,管理电源休眠省电.当然也可以使用红外通信,或底座供电手机nfc碰碰直接开锁.


  
单片机部分代码

void suan()
{    uint h1,h2,h3,x1,x2,x3;
uint t,i,xu,han;
for(t=0;t<50;t++){Jielong[t]=IapReadByte

(0x0400+t);}
if(Dao==1) {if(Jielong[6]!=2){x1=a1[1];x2=a2[1];x3=a3[1];xu=1;}else{x1=Jielong[0];

x2=Jielong[1];x3=Jielong[2];xu=Jielong[3]*100+Jielong[4]*10+Jielong[5];}}
if(Dao==2) {if(Jielong

[13]!=2) {x1=a1[2];x2=a2[2];x3=a3[2];xu=1;}else{
x1=Jielong[7]; x2=Jielong[8];x3=Jielong

[9];xu=Jielong[10]*100+Jielong[11]*10+Jielong[12];}}
if(Dao==3) { if(Jielong[20]!=2) { x1=a1

[3];x2=a2[3];x3=a3[3];xu=1;    } else{    x1=Jielong[14];x2=Jielong[15];x3=Jielong

[16];xu=Jielong[17]*100+Jielong[18]*10+Jielong[19];}}
if(Dao==4) { if(Jielong[27]!=2){x1=a1

[4];x2=a2[4];x3=a3[4];xu=1; }else{x1=Jielong[21];x2=Jielong[22];x3=Jielong[23];xu=Jielong[24]

*100+Jielong[25]*10+Jielong[26];}}
if(Dao==5) { if(Jielong[34]!=2) {x1=a1[5];x2=a2[5];x3=a3

[5];xu=1; } else{x1=Jielong[28]; x2=Jielong[29];x3=Jielong[30];xu=Jielong[31]*100+Jielong[32]

*10+Jielong[33];} }
if(Dao==6) { if(Jielong[41]!=2) {x1=a1[6];x2=a2[6];x3=a3[6];xu=1; } else

{x1=Jielong[35];x2=Jielong[36];x3=Jielong[37];xu=Jielong[38]*100+Jielong[39]*10+Jielong[40];} }
if(Dao==7) { if(Jielong[48]!=2) {x1=a1[7];x2=a2[7];x3=a3[7];xu=1; } else{x1=Jielong

[42];x2=Jielong[43];x3=Jielong[44];xu=Jielong[45]*100+Jielong[46]*10+Jielong[47];} }
han=(xu

+x1)%10;
if(han<2) {
data_c=a8[x2]*132307+xu*1+a4[x3]*168+a7[x1]*2+a5[x2]*665+a2[x2]*524+a6[x3]

*364+a3[x2]*257+a8[x3]*231+a5[x1]*275+a6[x2]*9+a1[x2]*37+a8[x2]*83+a6[x3]*139+a2[x1]*87;}
if

((han>1)&&(han<4)) {
data_c=a3[x2]*132320+xu*1+a6[x2]*758+a3[x2]*41+a4[x2]*116+a3[x1]*210+a7[x2]

*130+a2[x1]*266+a5[x3]*280+a2[x3]*149+a7[x3]*159+a1[x1]*452+a3[x1]*57+a8[x3]*557+a5[x2]*75;}
if

((han>3)&&(han<6)) {
data_c=a2[x2]*132306+xu*1+a5[x2]*335+a3[x2]*198+a3[x3]*599+a4[x2]*596+a5

[x3]*674+a3[x3]*307+a4[x3]*122+a6[x2]*72+a1[x1]*150+a1[x1]*193+a7[x1]*148+a8[x2]*99+a1[x1]*73;}
if((han>5)&&(han<8)) {
data_c=a8[x3]*132320+xu*1+a8[x2]*105+a5[x2]*238+a3[x2]*642+a1[x2]*485+a4

[x3]*498+a3[x3]*232+a3[x2]*129+a3[x3]*99+a5[x2]*40+a2[x2]*40+a1[x2]*179+a4[x1]*46+a1[x2]*50;}
if

((han>7)&&(han<10)) {
data_c=a7[x1]*132321+xu*1+a8[x2]*410+a6[x2]*333+a8[x2]*808+a5[x3]*526+a7

[x1]*406+a7[x2]*130+a7[x2]*230+a7[x2]*57+a7[x2]*50+a7[x2]*532+a4[x2]*128+a1[x2]*301+a2[x2]*26;}

/***************************改变区域end  *************************/

Lin[0]=data_c%1000000/100000;


---------------------

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝