自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

snowlyw的博客

网络安全

  • 博客(20)
  • 收藏
  • 关注

原创 vim 使用系列(三)-- 配置文件加载顺序

这篇文章简单讲讲 ubuntu 下 vim 的配置文件,其他 unix/类 unix 系统应该也是一样的。vim 启动之后将会自动读取它的配置文件。vim 中的配置文件有几种类型,可以通过vim --version查看,或者打开 vim,然后键入:version 查看,如我安装的 vim 输出如下:# 打开 vim,键入 :versionVIM - Vi IMproved 8.2 (2019 Dec 12, compiled Mar 18 2021 01:10:23)... system vim

2021-04-02 00:54:57 4641

原创 vim 使用系列(二)-- 基本常用操作

vim 基本常用操作前言这篇文章介绍的是 vim 的基本常用操作,完成本文的学习就可以跨越 vim 入门的障碍。这篇文章还没有涉及到使用插件,仅是使用 vim 原先就带有的基本编辑器功能。强烈建议:阅读本文时最好打开 vim 配合操作学习以达到最佳阅读效果。模式在 vim 中,每次按键在不同的模式中产生的结果是不同的。vim 8.2 的版本中,一共有 7 种基本模式和 7 种附加模式,附加模式是基本模式的变种。虽然 vim 有着 14 种模式,但是我日常常用的只有以下几种模式:插入模式(In

2021-04-02 00:51:21 3345

原创 Linux 0.95 内存管理

Linux 版本是从 0.12 到 0.95 的,具体情况感兴趣的自行搜索。这一系列的文章从 0.01 到 0.12,历经 4 个版本,除了 0.01 版本详尽解释所有的函数,其余版本都是在前一版本的基础上做新内容的介绍,这篇文章原先也是打算如此,但发现隔了几天没看源码,又是有些许生疏,更不用说读者了,而且对于 0.01 版本那个样式的代码解释,我看得不是很满意,注释离代码有点儿远,看着不是很舒服,因此这一篇文章将和 0.01 版本一样详尽的介绍每一个函数,但有些知识依旧不会像 0.01 版本说的那么基础。

2020-09-15 16:59:04 360

原创 Linux 0.12 内存管理

源码下载Linux 源码下载路径位于 https://mirrors.edge.kernel.org/pub/linux/kernel/,这篇博客所需要的 0.12 版本源码通过点击链接 https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/linux-0.12.tar.gz 可下载。对比 Linux 0.11 版本 变化Linux 从 0.12 版本开始,增加了内存交换的功能,也就是我们常说的 swap 分区。当

2020-09-08 17:10:09 455 1

原创 bt/bts/btr 指令

起因Linux 0.12 版本 mm/swap.c 中有一个 bitop 宏用到了 bt/bts/btr 这三个指令:#define bitop(name,op) \static inline int name(char * addr,unsigned int nr) \{ \int __res; \__asm__ __volatile__("bt" op " %1,%2; adcl $0,%0" \:"=g" (__res) \:"r" (nr),"m" (*(addr)),"0" (0)

2020-08-29 19:56:30 9292

原创 Linux 0.11 内存管理

源码下载Linux 源码下载路径位于 https://mirrors.edge.kernel.org/pub/linux/kernel/,这篇博客所需要的 0.10 版本源码通过点击链接 https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/linux-0.11.tar.gz 可下载。对比 Linux 0.10 版本 变化0.11 版的内存管理最大和 0.10 版本一样,都是 16MB,这两个版本最大的变化在于 0

2020-08-21 21:19:26 9479

原创 Linux 0.10 内存管理

源码下载Linux 源码下载路径位于 https://mirrors.edge.kernel.org/pub/linux/kernel/,这篇博客所需要的 0.10 版本源码通过点击链接 https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/tytso/linux-0.10.tar.gz 可下载,由于 Linux 0.10 版本由 Theodore Yue Tak Ts’o 发布的,所以 linux 0.10 版本在

2020-08-17 18:24:11 11399

原创 Linux 0.01 内存管理

源码下载Linux 源码下载路径位于 https://mirrors.edge.kernel.org/pub/linux/kernel/,这篇博客所需要的 0.01 版本源码通过点击链接 https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz 可下载。说明Linux 0.01 版本内核是一个 80386 平台版本的内核,所以需要了解 x86 平台的一些汇编知识以及 AT&T 汇编嵌入编程,不过没关系

2020-08-15 11:01:26 12254

原创 Namespace基本知识

NamespaceC++中namespace简单来说就是用来控制标志符(如变量,函数,类等)的名字冲突的。简单术语declarative region: 指标志符声明的区域。具体见图一。 potential scope: 指从该标志符的声明点到其declarative region的终点。也就是一个标志符的最大可能作用域。具体见图二。scope: 指标志符的可见区域。具体见...

2018-07-16 23:32:45 45112

原创 Gcc和Make的基本知识

我的主页 注:以下实验环境为Ubuntu 18.0404LTS, gcc 7.3.0GCC编译单个源文件main.c 生成目标文件:gcc -c main.c生成可执行文件: gcc -o main main.c,然后通过./main执行链接多个目标文件并生成可执行文件:gcc -o test main.o test.o链接库文件(以lib开头命名): 在默认路径查找-l(/l...

2018-07-14 22:20:03 11756

原创 C语言标准输入输出缓冲区

注: 以下实验环境为Ubuntu 18.04LTS(只有64bit),gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0缓冲区例子我们先来说说什么是C语言中的缓冲,直接来看一个例子体会一下就知道了。我们以printf函数和stderr为例,先说明stdout(对应printf)是遇到换行符或缓冲区满之后或程序结束后才输出缓冲,stderr一般是无缓冲的:/*...

2018-07-08 22:21:05 23659 1

原创 NFA和DFA等价性证明

广告:我的博客每个NFA都有一个等价的DFA证明思路(NFA转DFA的方法)我们要证明NFA和DFA等价,因为DFA是NFA的一般化,所以NFA一定可以模拟DFA,因此我们需要做的是用DFA模拟NFA。因为NFA在当前状态读到一个字符后可以有多条路可以走,所以模拟该NFA的DFA将有2k2k2^k个状态,每个状态都是NFA状态集的幂集的一个元素。具体操作在证明过程中。证明...

2018-06-08 13:27:30 15714 4

原创 不确定性有限自动机

对比确定性有限自动机(DFA)DFA:当给定了当前所在状态,在遇到一个字符之后,我们就可以确定要向哪一个状态转移。打个比方,就是在我们当前位置没有岔路口,没有给我们多选的机会。 NFA:NFA即不确定性有限自动机(nondeterminism finite automaton),它允许我们在遇到一个状态时可以有多条转移路径可以选择。特殊的是,它允许我们不读入任何字符就进行状态转移(此操作称为...

2018-06-08 13:25:24 21418

原创 证明regular operation中的union操作是封闭的

证明思路M1M1M_1和M2M2M_2是两个DFA,且L(M1)=A,L(M2)=A2L(M1)=A,L(M2)=A2L(M_1)=A,L(M_2)=A_2,现在要证明存在一个DFAMMM可以recognizes A∪A2A∪A2A \cup A_2(我们将会找到这样一个DFA,而不仅仅是存在),即L(M)=A∪A2L(M)=A∪A2L(M)=A \cup A_2。我们找这样一个DFA的方法是...

2018-06-08 13:24:22 11456

原创 确定性有限自动机

形式化定义我们用5元组(Q,∑,δ,q0,F)(Q,∑,δ,q0,F)(Q,\sum,\delta,q_0,F)定义确定性有限自动机QQQ是状态的有限集∑∑\sum 是字母表δδ\delta是转移函数,映射关系为Q×∑→QQ×∑→QQ×\sum \rightarrow Qq0q0q_0表示开始状态F⊆QF⊆QF \subseteq Q是accept状态集既然有了以上定义,接下来定...

2018-06-08 13:23:15 14622

原创 80x86CPU学习

这篇博文用来记录对硬件理解方面的一些困惑和一些80x86系列CPU的基础知识。CPU时钟(clock, clock pulse, clock rate, cycle)时钟(clock): 计算机(CPU)用时钟来同步(synchronize)CPU执行的指令。(不明白继续往下看)时钟脉冲(clock pulse)和时钟频率/时钟频率速度(clock rate/speed):时钟...

2018-05-05 11:08:40 12804

原创 操作系统定义

为什么会有这篇博文这篇博文只从标题来看会觉得很无聊(确实也是这样),并且会觉得没有必要。可是如果别人问你操作系统的主要作用是什么?你会很棒的回答,还是支支吾吾呢!下面进入正题。思路人类的思考一般要么是自顶向下(国人的思维方式)(国外),要么是(自底向上)(国外)。 1. 隐藏硬件(自顶向下) 2. 资源管理(自底向上)隐藏硬件(将丑陋转变为美丽)这里涉及到一个关...

2018-05-05 11:06:39 12099

原创 C语言变长参数表

C语言变长参数表标签(空格分隔): ANSI C 变长参数 标准输出声明格式,如printf函数:int printf(char *fmt, ...)其中,省略号表示参数表中的参数的数量和类型是可变的。**注意:省略号只能出现在参数表的尾部,即函数的声明中必须至少有一个显式声明的参数,如printf中的char *fmt参数。变长参数表的使用(处理)#in...

2018-05-05 11:04:34 12510 1

原创 格式保持加密——FF1算法

记大三一次计算机安全学作业使用AES算法实现以下格式保持加密。0、字符表:大写英文、小写英文字母、0-9、“-”和“*”1、功能:加密如下格式文本 abcd-efgh*23,输出保持此格式的密文(比如输出 edfa-daxm*89),并可以解密。2、可直接使用官方提供的AES代码。3、输入输出可以是文本文件,也可以命令行输入、屏幕输出。4、秘钥可以固定写在程序中,也可以是文

2018-01-06 15:26:10 15708

原创 C++实现AES的S-box

PS:本来想用纯C实现的,但是实现过程遇到了困难。实现过程用了C++的引用预备知识扩展欧几里得算法一点有限域GF(28)知识整体实现思路PS:参考《密码编码学与网络安全——原理与实践》第七版 第6.3节 AES TRANSFORMATION FUNCTIONS初始化S-box,使第xx行第yy列的元素为{xyxy}。 (代码实现时这一步和第二步合在一个initialize

2017-12-08 22:06:42 14165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除