No title
Python复习
数据类型
列表
元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
元组使用小括号,列表使用方括号
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等
1234567891011#元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:>>> tup1 = (12, 34.56);>>> tup2 = ('abc', 'xyz')# 以下修改元组元素操作是非法的。# tup1[0] = 100# 创建一个新的元组>>> tup3 = tup1 + tup2;>>> print (tup3)(12, 34.56, 'abc', 'xyz')
Asiv的人生感悟
db7958b91b9d655c4df6dc6bf9975842b65520c34798bcbb016e31ba604255f74c989ef74a9a7ef4ecbe8826fb121ed3988186a5e59b27aee60446b859c72c854a9b2ee4196621ce1487e0f78147b38d5672c2c1190d221b0f80cb4b58a6b52bbd7469e928a39f3cfc6b41e7d22c83c71c4583ac7226720e4ee0d4e39fdaa25051934975e2488e624433529c0a535eeaf5d4408283d16b2cce61eb82f54f26fcba06aa46f21325a3db13267e924c852c54adb19f027458f4a9d81f132c7b61415d490b127a25a25fe46a87e9d87f7ba242e42d27b0a34ce0ed5b85884a82368444ff20cfa030021bb13adc0dcd3e1c0d4c1e47de7ce2e2ad9 ...
强化学习笔记
基础
马尔科夫决策(MDP)
在随机过程中某时刻ttt的状态用StS_tSt表示,所以可能的状态组成了状态空间SSS。
如果已知历史的状态信息即(S1,...,St)(S_1,...,S_t)(S1,...,St),那么下一个时刻状态为St+1S_{t+1}St+1的概率为P(St+1∣S1,...,St)P(S_{t+1}\mid S_1,...,S_t)P(St+1∣S1,...,St)
当且仅当某时刻的状态只取决于上一时刻的状态时,一个随机过程被称为具有马尔可夫性质
P(St+1∣St)=P(St+1∣S1,...,St)P(S_{t+1}\mid S_t)=P(S_{t+1}\mid S_1,...,S_t)
P(St+1∣St)=P(St+1∣S1,...,St)
也就是说当前状态是未来的充分统计量,即下一个状态只取决于当前状态,而不会受到过去状态的影响。
注意:
虽然t+1t+1t+1时刻的状态只与ttt时刻的状态有关,但是ttt时刻的状态其实包含了t−1t-1t−1时刻的状态的信息,通过这种链式的关系,历史的信息被传递到了现在。
Markov pr ...
策略蒸馏
为了理解蒸馏的含义,我们先以DQN为例
DQN(Deep Q-Network)是一种强化学习算法,它通过深度神经网络来近似Q函数,从而实现智能体的行为决策。下面我们将介绍一个针对DQN网络的案例。
假设我们有一个小型的迷宫环境,智能体的任务是通过左、右、上、下四个动作来找到宝藏并获得最高的奖励。我们可以使用DQN算法来训练智能体。
首先,我们需要定义状态空间、动作空间、奖励函数以及转移函数。在这个案例中,状态空间是迷宫中每个位置的坐标,动作空间是四个方向,奖励函数是在找到宝藏时获得的奖励,转移函数是在智能体执行一个动作后转移到下一个状态的过程。
然后,我们可以使用深度神经网络来近似Q函数。在这个案例中,我们可以使用一个简单的全连接神经网络,它的输入是当前状态,输出是四个动作的Q值。我们使用均方误差损失函数来度量Q值的预测误差,并使用梯度下降算法来优化神经网络参数。
接下来,我们可以使用经验回放机制来训练DQN网络。经验回放是一种存储智能体的经验,并从中随机抽样的机制。这样可以使得训练数据更加丰富、稳定,并且可以避免连续的训练样本之间的相关性。在每次训练中,我们随机从经验池中选择一个批次 ...
现代密码学期末复习
基于斯坦福大学 密码学一
密码分析的四个手段
唯密文攻击(Ciphtext Only Attack,COA)
定义:唯密文攻击(COA)是指仅仅知道密文的情况下进行分析,求解明文或密钥的密码分析方法。
假定密码分析者拥有密码算法及明文统计特性,并截获了一个或者多个用同一密钥加密的密文,通过对这些密文进行分析求出明文或密钥。COA已知条件最少,经不起唯密文攻击的密码是被认为不安全的。
简单理解:只知道密文,推出明文或密钥,一般用穷举攻击。
已知明文攻击(Known Plaintext Attack,KPA)(也可称为KPA安全)
定义:已知明文攻击(KPA)是指攻击者掌握了部分的明文M和对应的密文C,从而求解或破解出对应的密钥和加密算法。
简单理解:知道部分的明文和密文对,推出密钥和加密算法。
选择明文攻击(Chosen Plaintext Attack,CPA)(也可称为CPA安全)
定义:选择明文攻击(CPA)是指攻击者除了知道加密算法外,还可以选定明文消息,从而得到加密后的密文,即知道选择的明文和加密的密文,但是不能直接攻破密钥。
简单理解:知道明文就知道密文,目标为推出密钥。 ...
通过修改 PE 装载 DLL 实验
参考课件 chap06.pdf 中“通过修改PE装载DLL”一节的内容,以及课本第 5.5节的 内容,实现对notepad.exe(修復並下載Notepad.exe)的修改,使得修改后的 notepad.exe 在双击运行时,能够自动隐式装载 MyDll3.dll,并进而 将一个网页下载到本地index.html 文件。
本上机作业的目的是让大家深入理解 PE 文件中的导入表、导入地址表等关键结构及相关的功能。
本实验所使用的notepad.exe 是 Windows 7系统(最好32位版)中的可执行程序,MyDll3.dll 也仅保证在 Windows 7下能正常工作,因此,建议在 Windows 7环境(可预先安装虚拟机)下进行修改。请在虚拟机中禁用所有杀毒软件,确保修改过程不会受到杀毒软件的干扰。保证虚拟机能联网,以便DLL装载后的网页下载动作能正常完成。
下载notepad.exe可能与课本中所描述的notepad.exe版本不一致,应主要参考课件中的修改流程。
使用PEview分析PE文件,使用HxD编辑器修改PE文件。
直接使用本书所附代码编译生成 MyDll3.dll ...
KNN&DBscan&K-means实现
Python集成开发环境(IDE)
(1) Anaconda: https://www.continuum.io/ (推荐)
(2) IDLE: Python解释器默认工具
(3) PyCharm: https://www.jetbrains.com/pycharm/
(4) 实验数据集:Python的scikit-learn库中自带的鸢尾花数据集,可使用datasets.load_iris()载入。
需要描述清楚算法流程,包括加载数据、数据处理、创建模型,训练,预测,评估模型等。如果必须给出实现代码才能更好地说明问题时,也必须先有相关的文字叙述,然后才是代码,代码只是作为例证
鸢尾花数据集共收集了三类鸢尾花,即Setosa鸢尾花、Versicolour鸢尾花和Virginica鸢尾花,每一类鸢尾花收集了50条样本记录,共计150条。
数据集包括4个属性,分别为花萼的长、花萼的宽、花瓣的长和花瓣的宽。对花瓣我们可能比较熟悉,花萼是什么呢?花萼是花冠外面的绿色被叶,在花尚未开放时,保护着花蕾。四个属性的单位都是cm,属于数值变量,四个属性均不存在缺失值的情况,以下是各属性的一些统计值 ...
调用惯例
调用惯例
简要介绍
==调用惯例(Calling Conventions)==指计算机程序执行时调用函数或过程的一些约定,包括:
1.函数的参数是通过栈还是寄存器传递?
2.如果通过栈传递,顺序是怎样的,是从左至右入栈还是相反。
3.谁负责清理栈,是调用者还是被调用者?
针对这三个约定,不同的调用惯例有不同的实现,参考课本和搜索引擎,归纳如下
调用惯例
调用场合
传参方式
入栈顺序
传返回值
清理栈者
名字修饰
cdecl
Windows API
栈传参
从右至左压栈
寄存器(EAX)
调用者函数
_+函数名
stdcall
C/C++
栈传参
从右至左压栈
寄存器(EAX)
被调用者函数
_+函数名+@+参数的字节数
fastcall
GCC/Microsoft
左DWORD用ECX和EDX,剩余栈传参
从右至左压栈
寄存器(EAX)
被调用者函数
@+函数名+@+参数字节数
程序分析
函数设置
main函数
1234567891011121314#include<stdio.h>int __cdecl add1(int a, int b) ...
RSA 加密体制破译
题目摘要
赛题名称: RSA 加密体制破译
赛题描述
RSA密码算法是使用最为广泛的公钥密码体制。该体制简单且易于实现,只需要选择5个参数即可(两个素数𝑝𝑝p和𝑞𝑞q、模数𝑁=𝑝𝑞𝑁=𝑝𝑞N=pq、加密指数𝑒𝑒e和解密指数𝑑𝑑d。设𝑚为待加密消息RSA体制破译相当于已知𝑚𝑒𝑚^𝑒me modmodmod 𝑁𝑁N能否还原𝑚的数论问题。目前模数规模为1024比特的RSA算法一般情况下是安全的,但是如果参数选取不当,同样存在被破译的可能。有人制作了一个RSA加解密软件采用的RSA体制的参数特点描述见密码背景部分)。
已知该软件发送某个明文的所有参数和加密过程的全部数据(加密案例文件详见附件3-1。Alice使用该软件发送了一个通关密语,且所有加密数据已经被截获,请问能否仅从加密数据恢复该通关密语及RSA体制参数?如能请给出原文和参数,如不能请给出已恢复部分并说明剩余部分不能恢复的理由?
加密过程
原始明文
1This is a test of my RSA system.
Frame0
1A5F51EB02EA9C0CC9B96926A08A7 ...