首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于henon方程的图像加密

基于henon方程的图像加密
EN

Stack Overflow用户
提问于 2012-07-25 21:45:01
回答 1查看 254关注 0票数 0

我想使用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)的异或加密像素值。

我的问题是:

有一些负值的随机值,因为我们知道没有负像素值。

因此,我可以跳过负随机值(只保存正随机值)来加密原始像素值吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的过去值吗?如果没有,那就用 K =1-a*(Math.pow(k,2))+b*k

甚至更好

代码语言:javascript
复制
k = 1 + k * (b - a *k)
  • (剧透警告:这可能是演习的教学要点。)Hénon序列是混沌的,浮点误差迟早会影响随机数。所以你的随机数发生器可能没有你想的那么确定。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11659115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档