序列密码的加密与解密

课程推荐:Python开发工程师--学习猿地--送9个上线商业项目

序列密码的加密与解密
明文、密文和密钥序列都是有单独位组成,即

x{i}, y{i},s_{i}\in \left{0,1\right}x
i

,y
i

,s
i

∈{0,1}

加密:yi = e{s_i}(x_i)\equiv x_i + s_i\ mod\ 2y
i

=e
s
i


(x
i

)≡x
i

+s
i

mod 2
解密:xi = d{s_i}(y_i)\equiv y_i + s_i\ mod\ 2x
i

=d
s
i


(y
i

)≡y
i

+s
i

mod 2
关于序列密码加密和解密函数有三点需要说明:

为什么加密和解密使用相同的函数?
我们必须证明解密函数的确可以再次得到明文位x_ix
i

。我们已知密文位y_iy
i

是通过加密函数 y_i\equiv x_i +s_i\ mod\ 2y
i

≡x
i

+s
i

mod 2 计算得到的,将这个加密表达式插入到解密函数中可得:

d_{s_i}(y_i)\equiv y_i + s_i\ mod\ 2\ \equiv(x_i + s_i) + s_i\ mod\ 2\ \equiv x_i + s_i + s_i\ mod\ 2\ \equiv x_i + 2s_i\ mod\ 2\ \equiv x_i + 0\ mod\ 2\ \equiv x_i\ mod\ 2\ Q.E.Dd
s
i


(y
i

)≡y
i

+s
i

mod 2
≡(x
i

+s
i

)+s
i

mod 2
≡x
i

+s
i

+s
i

mod 2
≡x
i

+2s
i

mod 2
≡x
i

+0 mod 2
≡x
i

mod 2 Q.E.D

这里的巧秒之处在于:表达式(2 s_i\ mod\ 2)(2s
i

mod 2) 的值总是 0,因为2\equiv 0\ mod\ 22≡0 mod 2。对此另一种理解方式为:s_is
i

的值为 0 ,此时2s_i = 2·0\equiv 0\ mod\ 22s
i

=2⋅0≡0 mod 2; 或者s_i = 1s
i

=1, 此时2s_i = 2·1 = 2\equiv 0\ mod\ 22s
i

=2⋅1=2≡0 mod 2

为什么模 2 加法会是一个很好的加密函数?
值得注意的是,XOR 函数是完全均衡的,即仅观察输出值,输入位的值为 0 和 1 的概率都是 50%。这一点是 XOR 门与其他布尔函数(比如 OR 门、AND 或 NAND 门)完全不同的地方。此外,AND 和 NAND 门不是可逆的

密码序列的本质究竟是什么?
事实证明,值s_is
i

的生成(也称为密钥序列)是序列密码安全性的核心问题。实际上,序列密码的安全性完全取决于密钥序列。密钥序列位s_is
i

本身不是密钥位。所以,我们如何得到密钥序列呢?生成密钥序列其实就是序列密码的关键所在。密码序列位的核心要求就是对攻击者而言它必须看上去是随机的。否则,攻击者 Oscar 就可以猜测该密钥哦序列位,进而能自行解密。

————————————————
原文作者:Lois
转自链接:https://learnku.com/articles/47386
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

Image placeholder
yzm197106
未设置
  0人点赞

没有讨论,发表一下自己的看法吧

推荐文章
utf8 加密与解密

utf8加密 functionUTF8Encoder(options){ varfatal=options.fatal; this.encode=function(output_byte_stream

utf8 加密与解密

utf8加密functionUTF8Encoder(options){ varfatal=options.fatal; this.encode=function(output_byte_stream,

《解密科技》之《万物互联 解密传感新时代》

当前,传感器技术已从单一型向功能、技术集合集成以及微型化、多功能、数字化、智能化、系列化、网络化发展。其应用领域也从高技术和军事领域迅速转移到大众化的民用领域,为传感器生产制造技术和产业化迎来了良好的

GoWeb教程_ 09.6. 加密和解密数据

前面小节介绍了如何存储密码,但是有的时候,我们想把一些敏感数据加密后存储起来,在将来的某个时候,随需将它们解密出来,此时我们应该在选用对称加密算法来满足我们的需求。 base64加解密 如果Web应用

微信支付退款解析 对加密串 B 做 AES-256-ECB 解密(PKCS7Padding)

微信支付退款解析对加密串B做AES-256-ECB解密(PKCS7Padding)1.微信支付文档 https://pay.weixin.qq.com/wiki/doc/api/H5....解密方式解

《MySQL主从不一致情形与解决方法》

一、MySQL主从不同步情况1.1网络的延迟由于mysql主从复制是基于binlog的一种异步复制通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现

由Linux内核bug引起SSH登录缓慢问题的排查与解决

今年7月,有一位用户反馈,使用该镜像创建出的快杰云主机每次启动时,第一次SSH登录会很慢,有时候需几十秒甚至几分钟才能登录成功,影响了使用体验。经过排查,定位到是Linux内核随机数熵池初始化慢的原因

开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?

大数据文摘出品编译:楚阳、橡树、钱天培对于开源项目来讲,写新代码的贡献者不一定是好程序员,但不会删代码的程序员一定不是合格的程序员——因为“删代码”才是使开源软件项目的代码简洁高效的关键所在。Mong

分享一个匹配8-16位数字和字母密码的正则表达式

课程推荐:PHP开发工程师--学习猿地精品课程 一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。 拆分需求如下: 不能全部是数字能全部是字母必须

Python教程-将序列分解为单独的变量

问题 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决方案 任何的序列(或者是可迭代对象)可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求就是变量的总数

算法题:乘积最大子序列

题目来源于力扣 理论基础 动态规划 乘积最大子序列题目描述 给定一个整数数组nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例示例1: 输入:[2,3,-2,4] 输出:

算法 序列提取

程序不仅仅是存储数据,通常具备描述数据关系(数据结构),操作数据行为(算法)。 本文演示一维数组通过reduce方法转二维,达到符合需求改变数据关系的小程序。 问题实现一个方法,将一维数组内的连续序

微课程 | 第十三课《全局序列视频演示》

 https://v.youku.com/v_show/id...上一期我们介绍了全局序列的原理,接下来我们通过视频来演示一下全局序列功能。我们来看一下这两种全局序列是怎么工作的。时间戳算法首先是sn

jquery序列化serialize()方法时中文乱码怎么解决?

原因:.serialize()自动调用了encodeURIComponent方法将数据编码了解决方法:调用decodeURIComponent(XXX,true);将数据解码如:varparams=j

几道php反序列化题目

推荐课程《PHP开发工程师--学习猿地精品在线课》 [极客大挑战2019]PHP提示源码泄漏,来用扫描器扫一下扫出来www.zip,然后下载下来有五个文件,代码审计一下 这个地方有一个可以反序列化的点

Golang 里的 AES、DES、3DES 加解密,支持 ECB、CBC 等多种模式组合

Opensslencryption:OpenSSL库的功能包装,用于对称和非对称加密和解密。 AES-ECB AES-CBC DES-ECB DES-CBC 3DES-ECB 3DES-CBC 安

深度解密 Go 语言之 context

Go语言的context包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 什

解密:华为CloudLink视讯引领行业的“金刚钻”

“华为新一代CloudLink视讯解决方案,完全基于鲲鹏+昇腾双引擎打造的全新平台、全系列智能协作终端等一系列新产品,未来华为视讯平台将全部更新换代。”华为IT产品线企业通信领域总裁孙权在接受IT16

工商银行MySQL数据库架构解密

本文根据DTCC数据库大会分享内容整理而成,将介绍工行IT架构转型中传统OLTP数据库架构面临的挑战和诉求,构建基于MySQL分布式企业级解决方案实践历程,包括技术选择、高可用设计、两地三中心容灾、运

腾讯万亿级 Elasticsearch 技术解密

作者: johngqjiang,腾讯TEG云架构平台部研发工程师Elasticsearch(ES)作为开源首选的分布式搜索分析引擎,通过一套系统轻松满足用户的日志实时分析、全文检索、结构化数据分析等多

GoWeb教程_09.0. 安全与加密

无论是开发Web应用的开发者还是企图利用Web应用漏洞的攻击者,对于Web程序安全这个话题都给予了越来越多的关注。特别是最近CSDN密码泄露事件,更是让我们对Web安全这个话题更加重视,所有人都谈密码

PHP 实现 Base64 加密算法

多看看外面的世界 对于现在很多的php程序员而言,绝大部分时间都是在做业务有关的代码,其它方面可能涉及的比较少,因此今天准备和大家讲讲不一样的知识,Base64加密算法,上午花了一点儿时间用PHP重新

如何通过 Tampermonkey 快速查找 JavaScript 加密入口

在很多情况下,我们可能想要在网页中自动执行某些代码,帮助我们完成一些操作。如自动抢票、自动刷单、自动爬虫等等,这些操作绝大部分都是借助JavaScript来实现的。那么问题来了?在浏览器里面怎样才能方

js AES+ECB加密

项目要实现请求参数加密1.aes.js引入 2.加密解密方法调用//AES加密方法,encrypt:要加密的数据 functionaesEncrypt(encrypt){ varaesPrivat

SWIG-Python中调用C代码的另一种方法

SWIG SWIG是SimplifiedWrapperandInterfaceGenerator的缩写。是Python中调用C代码的另一种方法。在这个方法中,开发人员必须编写一个额外的接口文件来作为S