Ⅰ 什么是滚码原理是什么
滚动码当前主要用在RKE(Remote Keyless Entry)系统中,进行身份验证,它的原理如下:编码器检测到按键输入, 把系统从省电状态中唤醒, 同步记数加1 , 与序列号一起经密匙加密后形成密文数据, 并同键值等数据发送出去。首先检测编码器需要是否与接收器的序号相对应,如果对应,就检测同步计数是否在同步窗口内,也就是说是否大于本机的保存同步计数但是又不大得太多,如果大得太多,本机就再作一次同步。
Flash平滑滚动原理及实例解析
如何使用:
电影剪辑scrollMC的onLoad事件:
showHeight = 350;
myHeight = 350;
speed = 13;
targetMovie = "show.testMC";
showHeight用来指定绑定的MC的显示高度,myHeight指定滚动条本身的高度。 speed是滑动的速度,其值越大,滑动越慢。targetMovie指定绑定的MC的路径(相对)。
技术内幕:
主要的ActionScript集中在一个空的电影剪辑中:
onClipEvent (enterFrame) {
mcMoved();
}
onClipEvent (load) {
a = eval("_parent._parent."+_parent.targetMovie);
function mcMoved() {
whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38));
var tempK = whereY-a._y;
if (Math.abs(tempK)>1) {
a._y += tempK/_parent.speed;
nowY = _parent.dragMC._y;
}
}
}
a = eval("_parent._parent."+_parent.targetMovie); 用来将指定绑定的MC位置。以后就可以使用a._x、a._alpha来访问这个电影剪辑了,与此相类似的技术还有_parent["myMC"]。
whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38));主要用来计算绑定的MC应该滚动到的位置。
function goArea(a) {
dragMC._y = (showHeight-38)*a;
}
这个比较重要,直接关系到对CPU的占用率。首先,if (Math.abs(tempK)>1)判断当前要滚动到的位置是否离当前位置有一个像素的差值。Math.abs()是计算绝对值的函数。如果不是,即已经滚动到了应该到达的位置,则不进行帧的重绘。(Flash绘制一个帧的图像要耗相当的CPU,事实上,CPU的大部份使用都花在显示上面。AS的执行只要很少的CPU,所以,进行必要的判断,去掉不必要的重新绘制。可以有效地降低CPU的使用率。至少在鼠标没有重新进行交互时可以很好地降低CPU的使用率)。如果其值大于1,则将绑定的MC位置重新计算。
a._y += tempK/_parent.speed;是一个很经常用的滑动公式,其实真正的公式是这样的:a._y += (whereY-a._y)/_parent.speed 这里只是在上一步进行了简化。
function goArea(a) {
dragMC._y = (showHeight-38)*a;
}
函数对应三个按钮“滚动到1/3、滚动到1/2、滚动到2/3、”其原理想想应该不难明白。
Ⅱ 滚动码的原理
编码器检测到按键输入, 把系统从省电状态中唤醒, 同步记数加1 , 与序列号一起经密匙加密后形成密文数据, 并同键值等数据发送出去。由于同步计数值每次发送都不同, 即使是同一按键多次按下也不例外。同步计数自动向前滚动, 发送的码字不会再发生。因此被称为滚动码。同步计数跟编码器序号一个64位一起经过DES加密,DES密钥为厂家独有,必须保密。加密之后的密文则通过射频系统发射出去。
接收端接收到密文之后,通过厂家的DES密钥进行解密,解密之后得到同步计数和编码器序号。首先检测编码器序号是否与接收器的序号相对应,如果对应,就检测同步计数是否在同步窗口内,也就是说是否大于本机保存的同步计数,但是又不大得太多,如果大得太多,本机就再作一次同步。如果在同步窗口中,通知执行机构执行用户命令,比如说打开门锁或者关闭门锁之类的。
由于加密算法能够把明文打散,因此,码的滚动会使得发射的码变化差异很大而难以破解,由于同步计数的存在,重复发送也没有效果,因此要攻破该类系统就要攻破DES算法。同步计数为16 位, 可达2的16次方 =65536 , 若每天用10 次, 则有18年的使用周期。32位的序列号, 容量为232 = 42 亿, 可以完全满足生产要求。