我想使用henon方程加密像素值:
Xi+2 =1-a*(Xi+1)*(Xi+1)+ bXi (抱歉我不能发布图像)
a=1.4,b=0.3,x0=0.01,x1=0.02
使用此代码:
ki+2 =1-a*(Math.pow(ki+1,2))+b*ki
我可以从henon方程中得到随机值。
1.00244,-0.40084033504000005,1.0757898361270288,-0.7405053806319072,0.5550494445953806,0.3465365454865311,0.99839222507778,-0.2915408854881054,1.1805231444476698,-1.038551118053691,-0.15586685140049938,0.6544223990721852,
。之后,我舍入了随机值。
使用此代码:
interi= (int) Math.round((ki*65536)%256)
我可以用随机值(henon)的异或加密像素值。
我的问题是:
有一些负值的随机值,因为我们知道没有负像素值。
因此,我可以跳过负随机值(只保存正随机值)来加密原始像素值吗?
谢谢
发布于 2012-07-25 22:14:55
你用Hénon序列作为伪随机数的来源,对吗?
当然,你可以选择放弃负数(或者取绝对值,或者做一些其他花哨的事情)--只要你在加密和解密上做同样的事情。如果有一个规范,它最好是明确的这一点。
也许您正在使用Javascript或其他一些语言,其中%不是模数,而是余数。如果是,请参见这个答案
还有三件事要注意:
k[i+1] =1-a*(Math.pow(k[i], 2))+b*k[i],因为Hénon序列只使用最后一个值。`甚至更好
k = 1 + k * (b - a *k)https://stackoverflow.com/questions/11659115
复制相似问题