前面我们提到过,有以下工具都可以开发Python代码: 直接使用Python解释器。运行Python就可以得到一个交互式命令行界面,可以简单的测试代码。作为Python入门,写代码不超过10行,完全可用。如果想开发大型代码,这个真心很难用。 使用IPython,也是命令行界面,但内置非常方便的各种宏与功能。比单纯的Python交互界面强太多。在某些情况下,例如无GUI的纯Linux环境下,这个就算是开发神器了。不过,如果有GUI,这个还是太难用了。 在图形界面下,Python提供了一个IDLE,非常简陋,差不多能用。 使用前面介绍的Anaconda提供的Spyder,非常不错,一般情况下也够...

  uI9g25T1kUX1   2023年11月02日   67   0   0 Python

在计算机世界里,信息安全始终占据着重要的地位,我们随处就可以看到信息安全的应用: ◆访问网站时,使用https而不是http会使访问者的安全性大大提升 ◆下载文件时,正规的网站都会提供MD5或类似的散列码,供下载后校验,以防止下载被篡改的文件(有可能包含病毒或恶意代码等) ◆网络银行或者手机银行的U盾或者电子证书等 ◆区域链以及数字货币等 ◆ssh登录时的免密设置 ◆github需要提交的公钥等 以上种种无一不提示着密码学知识的重要性。从本文开始,将沿着数据加解密的思路,将开发能够用到的密码学知识简单地梳理下。密码学的基本目的是使得双方能够在不安全的信道上进行安全的通信,在计算机网络中,假设有...

  uI9g25T1kUX1   2023年11月02日   46   0   0 Python

上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。归根结底,英文单词中字母出现的频率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感兴趣的同学可以去百科查字母频率详细统计数据。如果密文数量足够大,仅仅采用频度分析法就可以破解。如果再加上现代计算机强大的算力,凯撒加密算法更是不堪一击。 后续人类不断改进,在二战时期涌现了新的思路与算法。恩尼格玛机就是二战时期纳粹德国使用的加密机器,非常经典,并且难以破译。英国集全国之力进行破译,参与破译的人员有被称为计算机科学之父、人工智能之...

  uI9g25T1kUX1   2023年11月02日   112   0   0 Python

在计算机世界里只有二进制。唯有人类才会对数据进行类型与价值判断。例如,认为某些文件是文本文件、是WORD/EXCEL文件或者是图片。对于加密算法来说也是一样的,加解密算法处理的只是字节流,根本不关心所谓的文件类型。对于文件来说,存在以下基本操作: ◆open ◆close ◆read ◆write ◆delete 在Unix世界中,更是将文件这一概念发挥到极致,认为万物都是文件,都可以用基本类似的方式来打开,也就是所谓的原语。python也不例外,提供了内置的文件操作函数。下面的代码就演示了如何将word文档进行加密。假设我们用WORD文档写了一段文字,内容如下图所示...

  uI9g25T1kUX1   2023年11月02日   39   0   0 Python

上文介绍了使用AES算法进行文件加解密的代码。但是如果在代码中写死了(hardcode)文件名,每次要加解密文件都要去改python源代码,显然有些太笨了。为此,可以使用命令行参数来在不改动源代码的情况下,对命令行参数所指定的文件进行加/解密操作。也可以指定加解密后输出的文件名称,以方便使用。 我们如下约定: python文件名为aeshandler.py -i,表示输入文件名 -o,表示输出文件名 -e,表示加密 -d,表示解密 使用python经典的命令行框架argparse,它是python标准库的一部分,也就是说安装好python3.8就自带这个框架,不需要再安装什么。程序员经常说...

  uI9g25T1kUX1   2023年11月02日   39   0   0 Python

上文介绍了命令行方式来对文件进行加解密操作。本文将继续在此基础上,实现一个快速简易的GUI界面方便操作,先上代码看效果。 importargparse importconfigparser importjson importos importstruct importsys fromconfigparserimportConfigParser frompathlibimportPath fromCrypto.CipherimportAES fromCrypto.Util.Paddingimportpad,unpad fromgooeyimportGooey,GooeyParser from...

  uI9g25T1kUX1   2023年11月02日   44   0   0 Python

前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非就是以下方式: 保存到配置文件中,格式可以是txt/csv/ini/xml/yaml/json/其它特殊格式等; 保存到数据库中,数据库可以是本地的,也可以是远程的; 特殊情况下,配置信息先加密再保存。 保存到文件中的主要问题有: 没有格式的例如txt文件易读但也容易搞坏,从而使配置内容无法正确解析; 有格式的例如xml/yaml/json需要安装相关的包,需要写代码读写,其实也不轻松; 文件系统会让路径问题一直存在...

  uI9g25T1kUX1   2023年11月02日   47   0   0 Python

前面介绍了对称加密算法,本文将介绍密码学中另一类重要应用:消息摘要(Digest),什么是消息摘要?简单的定义是:对一份数据,进行一个单向的Hash函数,生成一个固定长度的Hash值,这个值就是这份数据的摘要,也称为指纹。 常见的摘要算法有: MD5 SHA1 SHA256 其它 特点如下:   无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,一般认为,摘要的最终输出越长,该摘要算法就越安全。变长输入,定长输出。 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。 消息摘...

  uI9g25T1kUX1   2023年11月02日   45   0   0 Python

很多软件工程师都认为MD5是一种加密算法,然而这种观点是不对的。作为一个1992年第一次被公开的算法,到今天为止已经被发现了一些致命的漏洞。本文讨论MD5在密码保存方面的一些问题。 假设下面一个场景:   软件产品让用户输入用户名与口令,随即使用MD5算法将口令(明文)转变成为摘要值。 用户登录时,用户输入的口令,也使用MD5进行计算,然后与存储的MD5进行比较,如果相同,则用户成功登录。 由于没有存储口令的原始值,所以即使相关人员(工程师、运维人员、黑客)获得了口令的MD5值,根据算法的特性,也无法知道原始的口令内容。 正是算法的不可逆性,因为口令只能够重新生成,而系统无法反馈原...

  uI9g25T1kUX1   2023年11月02日   50   0   0 Python

非对称加解密应用广泛,它的存在是致力于解决密钥通过公共信道传输这一经典难题。对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥,而这个密钥在传递过程中有可能会被截获,从而使加解密失效。难不成还要为密钥的传输再做一次加密?这样不就陷入了死循环?或许有人在想,密钥即使被盗取,不还有加密算法保证信息安全吗?但任何算法最终都会被破译,所以不能依赖算法的复杂度来保证安全。 可能的解决方案如下: 事先共享密 钥密钥分配中心 Diffie-Hellman密钥交换 非对称加密 非对称加密就是一种广泛应用的加解密技术。非对称加密需要4个密钥。通信双方各自准备一对公钥和私钥。其中公钥是公开的,由信...

  uI9g25T1kUX1   2023年11月02日   55   0   0 Python

有了非对称密钥、摘要、对称密钥等现代密码学算法与技术,是不是就能够保证通信的安全无虞呢,并不是。 密码学在互联网应用的四个目标:机密性、完整性、身份验证、防抵赖。到目前为止,我们讨论的技术中,其中防抵赖的目标并没有达到。 假设A、B、C三个人共享一个对称加密算法密钥,现在A和B互相通信,A和B一直认为是双方在发送消息。由于C也有同样的密钥,它可以拦截A发往B的消息,然后篡改消息并用同样的密钥加密后发送给B,B能够正确解密,但是该消息其实已经被篡改。 同样的场景,A、B、C三个人共享一个对称加密算法密钥,A向B发送了一条消息,但是A可以抵赖说这条消息并不是他发送的,理由就是C也有同样的密钥,这条...

  uI9g25T1kUX1   2023年11月02日   45   0   0 Python

数据库操作应是所有合格程序员的基本功,写的一手好SQL对于数据分析师而言更是安身立命之本。大部分软件开发人员使用的数据库都是MySql/MariaDB,毕竟LAMP(linux+apache+mysql+php)曾经风靡一时。但开发人员真正的瑞士小军刀却是SQLite,它是世界上装机量第一的嵌入式数据库。 SQLite最初的构思是在一条军舰上进行的。当时在通用动力工作的SQLite的作者D.RichardHipp正在为美国海军编制一种在导弹驱逐舰上使用的程序。那个程序最初运行在HewlettPackardUNX(HPUX)上,后台使用Infomix数据库。对那个具体应用而言Informix有点...

  uI9g25T1kUX1   2023年11月02日   27   0   0 Python

准备数据 为了方便准备试验用的数据,建议使用Faker这个库来模拟。Faker是一个Python软件包,可生成伪造数据。无论是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试,还是匿名化来自生产服务的数据,Faker都能完美实现。 pipinstallfaker 以下代码生成姓名、性别这类最常用的试验数据。 fromfakerimportFaker deffakedata(maxtimes): fake=Faker('zh_CN') data_total=[[fake.name(),fake.company(),fake.phone_number(),fake.compa...

  uI9g25T1kUX1   2023年11月02日   22   0   0 Python

互联网世界里最流行的开源关系型数据库之一就是MySQL/MariaDB了,由于高度的相似,故而直接使用mysql统一指称。 windows下的安装 windows最吸引人的地方就在于易于安装。mysql在WINDOWS下也是最容易安装的。直接在官网上下载可安装程序,一路NEXT即可。 ubuntu18.04的安装 如果是生产环境部署,建议以普通用户角色,使用sudo命令方式安装,从而兼顾安全性与权限充足。如果读者是开发者,在测试环境下使用root帐号,则可以直接输入命令。   获得最新的安装数据 aptupdate aptupgrade-y 安装mysql服务 aptinstal...

  uI9g25T1kUX1   2023年11月02日   103   0   0 Python

基于游标得操作 游标是数据库操作的相对底层的能力。简单的操作如下: importmysql.connector importrandom host='localhost' user='root' password='8848is8848' dbname='demodb' deffakedata(maxtimes): 连接数据库 demodb=mysql.connector.connect( host=host,user=user,password=password,database=dbname) democur=demodb.cursor() 插入模拟出来的数据。 for_inr...

  uI9g25T1kUX1   2023年11月02日   52   0   0 Python

不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQLServer(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与分析的神器。 SQLServer是微软在数据库领域打造的旗舰产品,使用起来安全、稳定、可靠,并且对于SQL语言的语法与特性支持的非常好。长期以来由于微软敌视开源运动,所以SQLServer只能够在微软的Windows平台上运行。自从微软拥抱开源后,SQLServer能够运行在: ◆Windows平台上,这是自家平台,不用说肯定支持的最好 ◆Linux平台上,笔者使用后也感觉非常流畅 ◆各类云平台上,其中微...

  uI9g25T1kUX1   2023年11月02日   56   0   0 Python

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是一个nosql数据库。nosql是not-onlysql的意思,泛指非关系型数据库。 Redis作为一个内存数据库,特点与优点很多,包括但不限于: ◆性能优秀,数据在内存中,读写速度非常快,支持并发10WQPS。 ◆单进程单线程,是线程安全的,采用IO多路复用机制。 ◆丰富的数据类型,支持字符串(strings)、散列(ha...

  uI9g25T1kUX1   2023年11月02日   36   0   0 Python

ClickHouse(ClickStream,DataWareHouse)是俄罗斯的Yandex于2016年开源的用于在线分析处理查询(OLAP:OnlineAnalyticalProcessing)MPP架构的列式存储数据库(DBMS:DatabaseManagementSystem),能够使用SQL查询实时生成分析数据报告。特别值得称道的是Clickhouse没有走hadoop生态,采用Localattachedstorage作为存储,而hadoop目前已经发展的臃肿不堪了。 Clickhouse的特点有: 列式存储,在特定场景下,能够获得很高的访问效率,并且节省空间 DBMS功能。几乎...

  uI9g25T1kUX1   2023年11月02日   61   0   0 Python

ClickHouse(ClickStream,DataWareHouse)是俄罗斯的Yandex于2016年开源的用于在线分析处理查询(OLAP:OnlineAnalyticalProcessing)MPP架构的列式存储数据库(DBMS:DatabaseManagementSystem),能够使用SQL查询实时生成分析数据报告。特别值得称道的是Clickhouse没有走hadoop生态,采用Localattachedstorage作为存储,而hadoop目前已经发展的臃肿不堪了。 Clickhouse的特点有: 列式存储,在特定场景下,能够获得很高的访问效率,并且节省空间 DBMS功能。几乎...

  uI9g25T1kUX1   2023年11月02日   66   0   0 Python

Excel是微软出品的办公神器,大部分读者相信或多或少都用过。其自带的函数丰富,可以进行复杂的数据运算、分析以及可视化的输出。到目前为止没有出现可以望其项背的竞品,大部分竞品不是在模仿的路上,就是在失败的路上。 虽然Excel不是数据库管理系统,Excel文档也不是完全结构化的文件,但它以行列形式保存了大量的数据,也可以将其视作准数据库文件。历史上,python有许多库能够操作Excel,例如lsxwriter、openpyxl、pandas、xlwings等,只是功能多少的问题。我们使用openpyxl库来操作excel文档。需要说明的是,由于Excel多次重大升级后,早期版本与现代版本差距...

  uI9g25T1kUX1   2023年11月02日   33   0   0 Python
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~