推广 热搜: 广场  Java  app  Word  营业  微信公众号  北京代理记账  商城  代理记账  商标交易 

python常见库的使用 python语言基础?

   2023-05-06 企业服务招财猫40
核心提示:python语言基础?Python语言诞生于90年代初,早期主要用于做科学计算的研究机构。近年来,由于web、大数据和人工智能的发展,它被广泛应用于系统管理任务的处理和web编程中,被称为比较流行的编

python语言基础?

Python语言诞生于90年代初,早期主要用于做科学计算的研究机构。近年来,由于web、大数据和人工智能的发展,它被广泛应用于系统管理任务的处理和web编程中,被称为比较流行的编程语言之一。

Python是用C语言开发的,但是python不再有C语言的指针等复杂的数据类型。python的简单性大大减少了软件的代码,进一步简化了开发任务。

Python如何玩转加密?

1、生成公钥和私钥对

使用openssl工具生成RSA公钥和私钥对。

1.下载openssl工具。下载地址

2.打开openssl文件夹下的bin文件夹,执行openssl.exe文件;

3.生成RSA私钥命令:

这里生成的密钥文件是2048位。

genrsa-outrsa_private_2048

4.生成RSA公钥命令:

注意,公钥和私钥是成对的,所以你生成一个后,另一个是基于前一个的文件名生成的,否则就不是一对!!

RSA-inRSA_private_-pubout-outRSA_public_

生成的文件应该在您的用户目录中,或者在openssl的bin文件夹中(有时它在这里,有时它它不在那里,这真令人困惑。反正两个地方都找就行了,肯定是有的)。

5.让让我们在这里介绍RSA密钥文件的规则。文件名都是。pem为后缀,生成的RSA密钥可以看做全部。

以-beginRSAprivatekey-开始并以-endRSAprivatekey-结束的字符串,没有换行符,这是原始的RSA私钥。

第二,安装—pycryptodome,python支持的加密库。

我用的是Python版,网上搜了一下。在python3.6之前,大部分版本都是用pycrypto加密的,但是在python3.6之后,因为没有人维护pycrypto,所以改名为pycryptodome。这个库的强大之处在于它是pycrypto库的扩展,使用起来更加方便灵活。

安装pycryptodome

如果你安装pip,它这很简单。

pip3安装pycryptodom:

无键

try:

钥匙(打开(fn)。r:除外

打印(导入rsa密钥文件时出错,fn,:

r:

r:除外

Print(将字符串密钥转换为rsa格式密钥时出错,skey,err)

返回ret

加密

从进口PKCS1_OA:

密文b

try:

密码PKCS1_(rsa_key)

密文cipher.encrypt(数据)

:除外

打印(RSA加密失败,,错误)

返回密文

因为RSA在加密过程中只能加密最大长度的字符串,所以如果你加密的数据太长,你需要在加密过程中分段加密。同样,解密也是分段解密。

1024位证书加密时最多支持117字节,解密时最多支持128字节;

2048位证书在加密时最多支持245字节,在解密时最多支持256字节。

加密时支持的最大字节数:证书位数/8-11(例如:2048位证书,支持的最大加密字节数:2048/8-11-245)。

其中,11个字节为保留字节。

我上面的密钥文件是2048位,所以加密块长度是245字节。

4.加密块

#根据密钥长度计算块大小

defget_block_siz:

try:

#RSA只支持有限长度内的数据加密解密,需要分区。

#块大小block_r:

引发Runtim:

r:除外

Print(计算加密和解密数据块大小时出错,rsa_k:

bs获取块大小(rsa密钥)

对于iinrang:

收益率数据[i:ibs]

无论加密中使用的段的大小如何,RSA都会对段进行解密,并根据/8的密钥长度对其进行解密。

从进口PKCS1_OA:

r:

密码PKCS1_(rsa_k:除外

打印(RSA解密失败,,错误)

返回ret_data

符号

从导入pkcs1_15

来自Crypto。哈希导入SHA256

#RSA签名

d:

签名

try:

h(数据)

签名pkcs1_(rsa_k:除外

打印(RSA签名失败,,错误)

返回签名

检查签名

#RSA签名验证

定义rsa_sign_v:

尝试:

h(数据)

pkcs1_(rsa_k:

retFalse

返回ret

加密解密类(我把RSA加密解密封装成一个类,方便后续直接调用),完整代码如下:

#-*-coding:utf-8-*-

作为密码导入

作为符号导入

导入加密。哈希作为哈希

从导入RSA

从导入PKCS1_v1_5作为PKCS1_v1_5_cipper

从导入PKCS1_v1_5作为PKCS1_v1_5_sign

来自Crypto。哈希导入SHA1

Rsa:级

RSA加密和解密签名类

def__int__(self,ciper_libPKCS1_v1_5_cipper,sign_libPKCS1_v1_5_sign,hash_libSHA1,

pub_fil:

#加密和解密库

_libcip:

_k:

_k:

_k:

_k:

_k:

_key(打开(pri_file)。read())

#块保留长度

_反转_大小反转sed_size

#根据密钥长度计算块大小

defget_block_siz:

try:

#RSA只支持有限长度内的数据加密解密,需要分区。

#块大小

保留大小反转大小

密钥大小rsa__in_bits()

if(k:

引发Runtim:

r:除外

Print(计算加密和解密数据块大小时出错,rsa_k:

bs_块_大小(rsa_k:

收益率数据[i:ibs]

#加密

定义编码字节(自身,数据,k:

文本b

try:

rsa_k:

rsa_k:

cur_t:除外

打印(RSA加密失败,数据,错误)

返回文本

#解密

定义dec_byt:

文本b

try:

rsa_k:

rsa_k:

如果键入(_lib)_OA:

当前文本(日期)

:

Cur_t:除外

打印(RSA解密失败,数据,错误)

返回文本

#RSA签名

定义符号_字节(自身,数据,k:

签名

try:

rsa_k:

rsa_k:除外

打印(RSA签名失败,,错误)

返回签名

#RSA签名验证

定义签名_验证(自我,数据,签名,k:

try:

rsa_k:

rsa_k:

r:

及格

如果__姓名____main__:

主()

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
合作伙伴
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  冀ICP备2023006999号-8