自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员晓老九

记录点滴

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

原创 密码算法---AES---分组---0001

未完肩膀1、知道怎么弄的,数学原理啥的先不管密码算法详解---AES2、数学原理,放着。AES算法详解3、AES的分组密码算法分组密码的加密模式(CFB,OFB)分组密码的加密模式(ECB,CBC,CTR)AES加密(3):AES加密模式与填充简述分组密码的五种常用模式4、python加密python加密...

2021-11-10 14:45:26 667

原创 密码算法之DES---3DES原理

肩膀DES算法实例详解python加密3DES图示3、DES 和 3DESDES 的密钥过短,现在已经不推荐使用了,所以这个库没有 DES 的算法封装,如果你需要使用这种算法,推荐用 pyDes 这个库。 DES 需要提供以下数据:key 秘钥,56, 112, 或者 168 位(bits) mode 加密方式,可以是 ECB 和 CBC IV 初始向量,CBC 方式必须提供,加密的 IV 和解密的 IV 必须一致。 pad 补位字符串,如果补位方式是 Normal,

2021-11-09 17:07:22 2040

原创 Crypto---编码---莫斯密码

随时补充修改摩斯密码翻译器_摩斯密码_摩尔斯电码_摩斯密码解密器 - 查询助手(转英文、中文)key = '11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 0010 110'result = ''for i in key: if i == '1': result += '-' elif i == '0': result += '.' else: .

2021-11-04 10:00:41 460

原创 pwnable.tw--->start 01

pwnable.tw01 前提--->链接PWNABLE.TW02 Challenges01 startIDA似乎看不出啥来扔到peda里反汇编看一看,因为是x86(file可知),先写再读。就知道这么点信息,没啥头绪,猜测是shellcode解。write的长度是0x14,read的长度是0x3c,明显读的比写的长覆盖_exit的offset是20,两种方法1 在_start的ret处下断点--->到退出是20,32位对...

2021-10-18 22:39:00 174

原创 lab2

lab2–01正式进入lab2之前需要一些铺垫知识铺垫知识----数据段、代码段、堆栈段、BSS段的区别linxu中段的管理在Linux下内存分配是以页为单位的,而页是通过段管理,各个段之间是独立的,方便管理。一个简单的程序被编译成目标文件后的结构如下:从上图可以看出,已经初始化的全局变量int global_init_var=84;和已经初始化的局部静态变量static int static_var=85;保存在了.data段,未初始化的全局变量和未初始化的局部变量保存在了.bss段。目

2021-04-08 17:28:18 655

原创 lab2--01

lab2–01正式进入lab2之前需要一些铺垫知识铺垫知识----数据段、代码段、堆栈段、BSS段的区别linxu中段的管理在Linux下内存分配是以页为单位的,而页是通过段管理,各个段之间是独立的,方便管理。一个简单的程序被编译成目标文件后的结构如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhfsog1a-1617863705778)(https://ivanzz1001.github.io/records/assets/img/cplusplus/c

2021-04-08 14:35:51 265

原创 01_lab1_记录

这里主要是记录,台湾大佬Angelboy的pwn的练习题,链接https://github.com/scwuaptx/HITCON-Traininglab1题目代码#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> void get_flag(){ int fd ; int pa

2021-04-05 01:12:58 167

原创 电话号码的字母组合

1 [1,2,3] 与[2,3,4] 相乘或者相加,也就是[12,13,14, 22,23,24, 32,33,3*4].a = [ i*j for i in [1,2,3] for j in [1,2,3]]print(a)#[2, 3, 4, 3, 4, 5, 4, 5, 6]2 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”,

2020-08-30 23:05:29 980

原创 我也忘了啥时候写的了

1 关于字符串大小写全部大写 upper()s = 'the quick brown fox'print(s.upper())-----THE QUICK BROWN FOX全部小写 lower()s = 'the quick brown fox'print(s.upper())----the quick brown fox每个单词的第一个字母大写import strings = 'the quick brown fox'print(string.capwor

2020-08-30 22:59:21 91

原创 typedef 为复杂的声明定义一个简单的别名

C++ typedef用法小结 (※不能不看※)

2020-07-17 16:22:59 299

转载 顺序表以及初始化

#include <stdio.h> /*此标准库用于输入输出*/#include <string.h> /*与字符串相关的标准库;字符的复制等*/#include <stdlib.h> /*这个与动态申请存储空间相关*//* 顺序表以及初始化---这里我们先使用数组来表示顺序表 1 定义数组 1.1 一个未不确定大小的数组 1.2 添加元素之后的数组长度 1.3 数组的大小(静态数组,数组的大小是固定的) 2 数组初始化 3 向数

2020-07-13 23:15:35 781

转载 二叉树遍历--迭代

#include <stdio.h>#include <string.h>#include <stdlib.h>/* 1 创建树 2 遍历 我们可以先迭代遍历,然后再非迭代遍历 2.1 先序遍历 2.2 中序遍历 2.3 后续遍历 2.4 层次遍历 3 搜索树 4 删除结点 */typedef char ElementType;typedef struct TNode *Position; /* 结构

2020-07-13 21:49:31 121

原创 KMP匹配

参考书籍:严蔚敏版数据结构第4章。建议啊:如果不懂KPM的原理,看了很多其他人的博客还是不是很懂,暂时就不要看了,直接看代码,根据代码来理解(搞技术对不对?又不是发表论文,非得有理论。),理解到那儿算那儿,时不时的看看,真的说不定那会儿就真的懂了。说实话,其实我也没怎么懂/只能说多看代码吧,现在是似懂非懂。记录下来,多来看看,说不定就真的懂了。两段代码:其实第一段代码还是比较好理解的,就算不知道KPM怎么回事,单纯的看代码也大概了解。void Next(char*T,int* next){

2020-06-27 09:29:44 175

原创 链式队列

相关解释已经在代码里了,不再阐述#include<stdio.h>#include <stdlib.h>//步骤:构建链表结构体->push元素或者初始化链表->pop元素/*步骤一*/typedef struct Link{ struct Link* next; int data;}link;/*步骤二*/link* push(){ link *p= (link*)malloc(sizeof(link)); p-&g

2020-06-25 16:35:41 124

原创 循环链表实现约瑟夫环

约瑟夫环问题,是一个经典的循环链表问题,题意是:已知 n 个人(分别用编号 1,2,3,…,n 表示)围坐在一张圆桌周围,从编号为 k 的人开始顺时针报数,数到 m 的那个人出列;他的下一个人又从 1 开始,还是顺时针开始报数,数到 m 的那个人又出列;依次重复下去,直到圆桌上剩余一个人。如图 2 所示,假设此时圆周周围有 5 个人,要求从编号为 3 的人开始顺时针数数,数到 2 的那个人出列:出列顺序依次为:编号为 3 的人开始数 1,然后 4 数 2,所以 4 先出列;4 出列后,从 5 开

2020-06-25 12:57:59 1435

原创 双向链表

关键信息已经在代码中注释了,不在陈述#include <stdio.h>#include <stdlib.h>//双向链表的结构体;前驱、数据、后继typedef struct double_link{ struct double_link *pro; int data; struct double_link *next;}link;link * initLink(link *p){ //link* temp=NULL; p=

2020-06-25 10:49:12 144

原创 链表插入

#include <stdio.h>#include <stdlib.h>//我们需要先定义链表的结构体typedef struct Link{ int elem; struct Link * next;//这个是一个结构体型的指针}link;link *initLink(){ link *p= (link*)malloc(sizeof(link)); link *temp=p; for(int i=1;i<5;i++){

2020-06-23 23:17:10 194

原创 EXC_BAD_ACCESS(code=1)的问题

代码中有解释为什么?因为a->next指向的是NULL,temp=NULL,这是不行的,这相当于野指针。所以我们要用temp->next。#include <stdio.h>#include <stdlib.h>//我们需要先定义链表的结构体typedef struct Link{ int elem; struct Link * next;//这个是一个结构体型的指针}link;link *initLink(){ link *p=

2020-06-23 22:42:01 1436

原创 顺序表的插入--c

所有的解释已经注释在代码里了。#include <stdio.h>//输出输入#include <stdlib.h>//分配空间#define Size 5//定义顺序表的结构typedef struct Table{ int *head; int length; int size;}table;//一个返回结构体的函数table initTable(){ table t;//初始化 t.head = (int *)mall

2020-06-23 08:31:30 3962

原创 创建顺序表--c

#include <stdio.h>//输出输入#include <stdlib.h>//分配空间#define Size 5//定义顺序表的结构typedef struct Table{ int *head; int length; int size;}table;//一个返回结构体的函数table initTable(){ table t;//初始化 t.head = (int *)malloc(Size*sizeof(i

2020-06-22 22:31:32 1250

转载 2020-06-22-位掩码(BitMask)的介绍与使用

非原创,参考链接:位掩码(BitMask)的介绍与使用一、前言位运算在我们实际开发中用得很少,主要原因还是它对于我们而言不好读、不好懂、也不好计算,如果不经常实践,很容易就生疏了。但实际上,位运算是一种很好的运算思想,它的优点自然是计算快,代码更少。二、基本知识介绍二进制:二进制是由1和0两个数字组成的,它可以表示两种状态,即开和关。所有输入电脑的任何信息最终都要转化为二进制。目前通用的是ASCII码。最基本的单位为bit。位运算:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算

2020-06-22 11:34:35 760

原创 20-06-16-指针的各种骚操作

看c语言也有一段时间了,想记录一下关于指针的各种用法。参考书籍以及资源如下:c语言中文教程参考书籍:c语言入门经典(第5版)1 指针?什么是指针?指针就是地址。就这么理解,没错的。指针(即地址)数据图 1-1那我们要指针干嘛呢?也就是它有什么用呢?对吧,你不能光有这个东西,没啥用怎么行。指针就是指向数据的地址,关于数据是什么?只要合理都行。可以是整数、小数、函数、结构体、共用体等等,都行。因为指针就是一个地址啊,地址里面是什么都可以啊,对吧,挺简单的吧。1.1 怎么.

2020-06-16 08:56:10 359

原创 密码学基础知识---CFB---OFB---CTR

1 CFB—cipher feedback----密文反馈模式-在CFB中,前一个密文分组会被送回到密码算法的加密端。所谓反馈就是指返回输入端的意思我们来分析上图,我们可以发现CFB的加密或者解密过程中都是”加密“,因为这是反馈模式,是将密文返回后加密之间的输入端的。CFB与CBC的不同主要体现在,加密的先后。在CBC中,是先XOR运算再加密,而CFB是先加密再XOR运算。同样的,第一个密文分组,不存在前一个输出的数据,所以需要初始向量化(IV)来代替。这与CBC是一致的。注意 CFB的加

2020-06-12 12:53:35 3870

原创 密码学基础---对称算法---CBC

链接:ECB1 CBC–cipher block chaing版权说明,并非原创!!!只是简单的知识总结记录[日]结城浩出版社,图解密码技术(第3版),人民邮电出版社出版时间,2016年06月。感谢!CBC 是密文分组连接模式在CBC中,明文分组与前一个密文分组进行XOR运算,然后再加密我们可以与ECB比较发现,CBC比ECB多一步,一步什么呢?多了XOR的过程,这样密文加密与密文加密就通过类似链的方式连接了起来,窃听者就很难通过改变密文分组的方式搞破坏!上图也可以显示出来它们之

2020-06-12 11:13:33 2314

原创 20-06-12-密码算法---对称算法--ECB

密码算法—对称算法–ECB1分组算法1.1 ECB–electronic codebook—电子本模式明文分组、密文分组ECB模式,将明文分组加密之后的结果直接成为密文分组 看到莫有,ECB是直接将加密之后的密文拼接起来。注意的是当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充(padding)。1.2 ECB的缺陷-)可以发现ECB中,明文分组与密文分组是一一对应的,那么如果明文中存在多个相同的明文分组,这些明文分组最终都将被转换为相同的密文分组。这样一来

2020-06-12 10:17:21 642

原创 20-06-11-c语言知识总结1

C语言记录格式化输出%d————十进制有符号输出%u————十进制无符号输出%x————以十六进制表示的整数%s————字符串. “hello world”%c————单个字符. char set = ‘a’%e————指数形式的浮点数%f————float型浮点数%lf————double型浮点数%p————指针的值位移 <<. 左移 ———只有逻辑左移,高位溢出,低位补零1010 0110————— <<3—...

2020-06-11 07:31:41 247

转载 密码学---基础知识

简书—密码学专题–基础知识基础知识1.1 术语1.1.1 发送者、接收者发送者发送消息,接收者接受消息。假设发送者 (sender) 想发送消息给接收者 (receiver),并且想安全地发送消息:她想确信窃听者不能阅读发送的消息。1.1.2 消息和加密消息(massage)也称明文(plaintext) 。 用某种方法伪装消息以掩藏它的内容,这个过程称作加密(encryption),被加密之后的消息称为密文(ciphertext),而把密文转换为明文的过程称作解密(decryption)。

2020-06-10 16:09:26 2157

转载 20-06-04-c/c++取地址(&)和引用(&)----指针(*)和解引用(*)

优秀作者借鉴:初级篇——指针()、取地址(&)、解引用()与引用(&)的区别无论是c还是c++,指针都是*初步了解——指针与取地址这里是c文件,要以xxx.c命名#include<stdio.h> int main(void){ int num = 7; int *p = &num;//初始化指针,也可以写作int* p = &num; printf("%d 的地址是 %p\n", num, p); return 0;}int

2020-06-04 19:27:18 270

原创 20-06-03-LVM逻辑卷的基本概念、基本管理、拉伸与缩小

LVM逻辑卷的基本概念为什么需要LVM呢?比如你的电脑A磁盘内存已经饱和,需要扩充。这个时候怎么扩充而不会破坏掉已有的内容?这个时候就需要LVM了。PE 物理扩展PV 物理卷VG 卷组LV 逻辑卷以上4个是依次变大的我们只需要对LV操作就可以,这样就不会影响到物理层基本管理创建pvcreat /dev/sda1vgcreat linuxcast/dev/sda1lvcreat -n mylv/dev/sda1mkfs.ext4 /dev/mylv/l

2020-06-03 20:41:07 222

原创 20-05-27-Linux文件基本操作-Linux系统目录架构-linux常用命令-Vi文本编辑器-磁盘基本概念-使用fdisk进行磁盘管理-Linux文件系统

Linux文件基本操作复制cp 需要复制的文件 复制之后的文件名移动mv 需要移动的文件 移动之后的文件(或者是/xx/xx 表示移动到哪里)删除rm -r创建touchLinux系统目录架构/ 根目录/dev 设备/etc 与系统相关的二进制文件home 家目录/var/tmp 经常变化的/var/log 日志也经常变化proc 虚拟的内存/boot/grup 系统启动linux常用命令findfind -n

2020-05-27 20:09:02 116

原创 20-05-26-牛客网c++的输入输出

必要的两行#include using namespace std;cout 标准输出流; cout << "Value of str is : " << str << endl;cin标准输入流 cin >> name;比如这样一个输入题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗.

2020-05-26 20:36:13 346

原创 20-05-26-命令行文本处理工具-Linux启动详解-RPM软件包管理-Bash的基本操作-文件系统基本结构

20-05-26-命令行文本处理工具-Linux启动详解-RPM软件包管理-Bash的基本操作-文件系统基本结构命令行文本处理工具 grep cut wc sort sed diff 其中diff一点也没有想起来,是看了才想起来的wc 是word count的缩写wc -l 统计行数wc -n 统计单词个数wc -c 统计字符个数sort 对文件排序。如果忘记可以,sort --help查看 可能常用的是sort -tk cxsort -b 忽略空白sort -

2020-05-26 20:25:08 252

原创 20-05-25-linux网络基础-网络基础配置-多命令协作-部分文本处理

20-05-25-linux网络基础-网络基础配置-多命令协作-部分文本处理linux网络基础IP(网络地址+主机地址),网络地址表示所在域,主机地址表示所在域中的某个主机子网掩码 网址划分与子网掩码是成对出现的比如 (IP)192.234.23.1子网掩码 255.255.255.1这就表示前24位是网络地址,后8位是主机地址也就是说子网掩码准确的表示了网络地址与主机地址的划分IPv4是32位长,IPv6是128位长。现在逐步向128位转换MAC地址(物理地址)这个主要是

2020-05-26 08:38:18 236

原创 数组系列01-----二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。该数组不是一般的数组,从左到右递增、从上到下递增意味着每行最后一个最大,每列第一个最小。Python# -*- coding:utf-8 -*-# class表示一个类,定义一个类。self.xx意味着此变量或者常量是全局的。class Solution: # array 二维列表

2020-05-24 17:49:18 177

转载 Bash最基本的语法

Bash最基本的语法echo命令echo命令的作用是在屏幕输出一行文本,可以将该命令的参数原样输出。echo -n 默认情况下,会有回车符;参数-n会取消回车符$ echo a;echo bab$ echo -n a;echo babecho -e -e参数会解释引号(双引号和单引号)里面的特殊字符(比如换行符\n)。如果不使用-e参数,即默认情况下,引号会让特殊字符变成普通字符,echo不解释它们,原样输出。$ echo "Hello\nWorld"Hello\nWorl

2020-05-13 14:49:37 686

转载 循环和条件判断---Bash

循环Bash脚本教程菜鸟教程while循环while循环有一个判断条件,条件满足,就执行命令语法:while condition; do commandsdoneuntil循环只要不符合判断条件,就执行命令until conditiondo commandsdonefor…in循环for...in循环用于遍历列表的每一项。for variable in listdo commandsdonefor 循环for循环还支持 C 语言的循环语法。for ((

2020-05-13 14:31:20 295

转载 Vim快捷键

行操作—BashBash 内置了Readline库,具有这个库提供的很多“行操作”功能,比如命令的自动补全,可以大大加快操作速度。这个库默认采用Emacs 快捷键,也可以改成 Vi快捷键。$set -o viBash脚本教程里有关于Emacs的快捷键,本文主要介绍的是Vi的快捷键光标移动上下左右的移动一个字符上下左右的移动一个字符,↑、↓、←、→;或者是kjhl,h在左边表示左移,l在右边表示右移。↑k光标向上移动一个字符↓j光标向下移动一个字符←h光标

2020-05-13 11:02:51 131

转载 运算符----Bash

基本运算符一般都有哪些运算符?算数运算符关系运算符布尔运算符字符串运算符文件测试运算符巨人的肩膀:Bash脚本教程菜鸟教程算数运算符Bash不支持简单的数学运算,比如a=2+2,这是不对的。但是,可以通过其他的命令来实现,比如awk和expr。expr是一款表达式计算工具,使用它能完成表达式的求值操作。注意使用的是反引号`,不是单引号,也不是双引号,也不需要{}、()#!/bin/bashvar=`expr 2 + 2`echo "两数之和:$val"#输出4

2020-05-13 10:16:03 255

转载 数组----Bash

数组巨人的肩膀:Bash脚本教程菜鸟教程bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。定义数组在Shell中,用括号{}来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n)#可以这样array_name=(value0 value1 value2 value3) #可以这样array_name=

2020-05-13 08:35:57 302

转载 字符串---Bash

字符串""和 ''的区别字符串嘛,可以单引号,双引号。我们知道在Python中,""和''没啥区别,真的一点区别也没有。在Python3里,print("hello word")print('hello word')#输出是一样的hello wordhello word但是在c/c++里,是不一样的。''是针对字符的,比如a;而""是针对字符串的,比如"hello"。而shell呢,主要是用c/c++实现的,所以在shell里,""和''是有区别的。单引号限制最大,任何的字符都会原样输

2020-05-13 08:08:53 287

空空如也

空空如也

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

TA关注的人

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