密码学数学基础
前言 本篇文章整理了学习密码学需要的部分数学基础 参考资料: 《初等数论》(第三版),潘承洞 潘承彪 著 《抽象代数基础》(第二版) ,丘维声 著 数学基础 数论部分 整除 对于a,b∈Z,a≠0a,b\in \mathbb{Z},a\ne0a,b∈Z,a=0,若存在∃q∈Z,s.t. b=aq\exists q\in \mathbb{Z},s.t.\ b=aq∃q∈Z,s.t. b=aq,则说明aaa整除bbb,也即bbb被aaa整除,记作a ∣ ba\ |\ ba ∣ b,同理也有q ∣ bq\ |\ bq ∣ b。 性质: $a\mid b \Longleftrightarrow-a\mid b \Longleftrightarrow a\mid -b \Longleftrightarrow| a|\mid |b| $ a∣b∧b∣c⟹a∣ca\mid b \wedge b\mid c \Longrightarrow a \mid ca∣b∧b∣c⟹a∣c $a\mid b \wedge a\mid c \Longleftrightarrow \forall ...
全同态加密入门
前言 大数据浪潮下的隐私保护已经成为无数网民亟待解决的问题,由此21世纪初出现了全同态加密的多种方案。本博客旨在梳理全同态加密的发展脉络,结合陈智罡老师的《全同态加密——从理论到实践》记录自己的学习历程 引言 为什么需要全同态加密 结合网络通信中数据的生命周期异或是存在形式,大致分为三种形态:传输、存储和计算。数据在传输过程中可以用AES进行加密,再用RSA对密钥进行加密。数据存储也可以加密,比如windows里面的bitlocker对磁盘加密。唯一亟待解决的就是数据在计算时怎么加密。传统的密码在对密文进行计算的时候,必须先对密文进行解密,再进行运算。密文解密了就有泄漏的风险,于是密码学家就开始想能不能直接在密文上面进行运算而无需解密。如果能解决这个问题,就能够解决数据计算时隐私保护的问题,从代数角度来看就是同态性。 1978年,Rivest、Adleman和Shamir(即RSA提出者)提出了隐私同态加密,也就是现在所说的全同态加密。当时RSA只满足乘法同态性,实现全同态加密成为当时的一个开放难题。 什么是全同态加密 根据上面的例子不难得出,全同态加密指在不解密的情况下,能够对密文执 ...
算法基础
算法基础 本博客主要参照GitHub开源算法书籍hello-alo以及oi-wiki,这里对开源作者respect,感谢开源作者们的辛勤付出。 算法引入 算法其实在生活中无处不在,最典型的一个例子就是打扑克时对手牌洗牌。 将手牌分成两部分,左边为有序部分,右边为无序部分。然后让我们看看算法是怎么运行的(以78654为例且按升序排列) 最初有序部分为7,无序部分为8654 接着8>7,将8插入到7的右边,此时有序部分为78,无序部分为654 接着6<8,将8往右移,6<7,将7往左移,最后将6插在最左边 … 同理,像这样迭代,每次从无序部分取出最左边的元素,与有序部分里面的元素从右往左进行比较,找到属于自己的位置,最终得到升序的排序。 这就是插入排序的思想。 什么是算法 通过上述的例子,想必大家对算法有了一个基本的了解。那么算法到底是什么? 算法是**规则的有限集合是为了解决特定问题而规定的一系列操作。**它具有以下特性: 输入特性:可以有零个输入,多个输入。 输出特性:必须要有输出。 有穷性:每个步骤都能在有限时间完成的。 确定性:对于每种情况下执行的操作,在算 ...
前端三件套
前端开发 众所周知,前端三剑客(htm、css、JavaScript)是一个网页不可或缺的元素,本篇博客记录学习前端三件套的历程。 HTML html里面有很多标签,下面来逐一介绍 HTML标签 <!DOCTYPE html> HTML 文档的文档类型声明<html> <head> <meta charset="UTF-8"> <title>Title</title></head><body> <h1> 1级标题 </h1> <h2> 2级标题 </h2> ... <h6> 6级标题 </h6> </body> 编码(head) <meta charset="UTF-8"> 定义用UTF-8来对字符进行编码 title(head) <title>Title ...
Django实践
前言 由于博主本学期开设了web程序设计这门课,于是为了进行开发,不得不学习python里面的一些web框架。早闻Django大名,遂开始学习,谨以此博客记录Django学习记录 前期准备 安装 Django作为一款优秀的python web框架,安装也是非常简单的。只需在命令行输入 pip install django 如果安装了anaconda也可以先新建一个虚拟环境来进行开发 conda create -n django_test python=3.10conda activate django_testpip install django 安装完之后,django会自动添加django-admin.exe到环境目录。 出现以上图片即说明安装成功。 如果要创建一个新的项目,运行 django-admin startproject django_test 则会出现以下目录 D:\DJANGO_TEST│─ manage.py 管理项目的文件。例如:运行、类自动生成数据表│└─django_test asgi.py ...
再战upload
前言 继upload-labs靶场过后,博主又搜集到了一个评价不错的文件上传靶场,出自国光师傅的upload-labs-docker。里面有详细的搭建过程,故本文不再赘述。借此机会可以温习以下之前学过的知识,本次靶场共有13关,废话不多说,开始打靶! 靶场实战 pass-01 访问靶机ip地址,映入眼帘的就是一个大大的javascript,不用多想,妥妥的js前端验证。上传一个shell.php试试 果然有弹窗,老办法,禁用javascript试试,发现上传成功。用蚁剑连接试试 pass-02 同样,本关给了提示,要用.htaccess文件绕过,编写.htaccess如下: <FilesMatch "\.jpg"> SetHandler application/x-httpd-php</FilesMatch> 该文件的意思是将.jpg为后缀的文件当作.php文件进行解析 随后上传shell.jpg为一句话木马,用蚁剑连接 pass-03 本关为MIME绕过,用bp抓包进行修改content-type字段就行 pass-04 本关用 ...
upload-labs文件上传靶场全通关
一、环境搭建 从GitHub上面直接下载源码upload-labs,用phpstudy搭建靶场,将下载解压后的文件放到WWW文件目录下即可,如出现一下界面即为搭建成功 二、靶场实战 pass-01(前端绕过) 直接上传一个一句话木马shell.php试试,发现一个弹窗,只允许上传jpg、png、gif类型的文件。 很显然,这是一个js前端验证,即在前端界面就限制了上传文件的类型,上传的文件甚至都没有到后端的数据库,所以更别谈解析了。解决方法也很简单,直接关闭浏览器的前端验证就行。这里以火狐浏览器为例,在搜索栏输入about:config,发现如下界面,搜索javascript,找到javascript.enabled关闭就行 再次上传shell.php发现上传成功 之后直接用蚁剑连接就行了 pass-02(MIME验证) 上传shell.php,这次没有前端弹窗,直接显示了上传文件类型不正确,查看源码 $is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_ ...
Nacos漏洞
test