2016 - 2024

感恩一路有你

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

浏览量:3710 时间:2023-03-27 10:18:52 作者:采采

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 -out rsa_private_ 2048

4.生成RSA公钥命令:

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

RSA-in RSA _ private _-pub out-out RSA _ public _

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

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

以-begin RSA private key-开始并以-end RSA private key-结束的字符串,没有换行符,这是原始的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.加密块

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

def get_block_siz:

try:

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

#块大小block_r:

引发Runtim:

r:除外

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

bs获取块大小(rsa密钥)

对于i in rang:

收益率数据[i:i bs]

无论加密中使用的段的大小如何,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:

ret False

返回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:

#加密和解密库

_lib cip:

_k:

_k:

_k:

_k:

_k:

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

#块保留长度

_反转_大小反转sed_size

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

def get_block_siz:

try:

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

#块大小

保留大小反转大小

密钥大小rsa__in_bits()

if (k:

引发Runtim:

r:除外

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

bs _块_大小(rsa_k:

收益率数据[i:i bs]

#加密

定义编码字节(自身,数据,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__:

主()

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。