首页 技术 正文
技术 2022年11月15日
0 收藏 644 点赞 3,962 浏览 2265 个字

1、chr()函数

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

2、s[a:b:c]

s=(1,2,3,4,5)

1>、 s[a]下标访问s列表内内容

列表下标从0开始,即

s[0]=1

s[1]=2

s[4]=5

s[-1]=5

s[-2]=4

2>、s[a:b]

这是一个左闭右开区间,即

s[0:2]=(1,2)

s[0:3]=(1,2,3)

s[0:-1]=(1, 2, 3, 4)

s[0:-2]=(1,2,3)

3>、s[a:b:c]即s[起始位置:终止位置:步长]

line = "abcde"
line[::-1]
# 结果为:"edcba"
# line[::-1]其实就是反转字符串。
a='python'
b=a[::-1]
print(b) #nohtyp
c=a[::-2]
print(c) #nhya[i:j:s] #表示:i,j与上面的一样,但s表示步进,缺省为1.
#所以a[i:j:1]相当于a[i:j]
#当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
#所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。

3、匿名函数lambda

#-*- coding:utf-8 -*-
#__author__ = "www.iplaypy.com"# 普通python函数
def func(a,b,c):
return a+b+cprint func(1,2,3)
# 返回值为6# lambda匿名函数
f = lambda a,b,c:a+b+cprint f(1,2,3)
# 返回结果为6'''
f = lambda a,b,c:a+b+c 中的关键字lambda表示匿名函数,
冒号:之前的a,b,c表示它们是这个函数的参数。
匿名函数不需要return来返回值,表达式本身结果就是返回值。
'''

4、Python实现AES加密和解密

这里采用CBC模式:CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。

更多其它模式见(只有解释,无代码):https://blog.csdn.net/zhchs2012/article/details/79032656

代码(代码参考自:https://www.cnblogs.com/frank-shen/p/10281708.html):

import base64
from Crypto.Cipher import AES
# 密钥(key), 密斯偏移量(iv) CBC模式加密def AES_Encrypt(key, data):
vi = '0102030405060708' #密钥偏移量
pad = lambda s: s + (16 - len(s)%16) * chr(16 - len(s)%16) #定义一个函数,这个函数的名字pad,这个函数需要一个参数,也就是s。
data = pad(data) #因为CBC模式AES加密需要满足加密数据长度是密钥长度的整数倍,所以如果长度不是整数倍,要加数据
#下面两行就调用函数完成了加密
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
# 加密后得到的是bytes类型的数据
encryptedbytes = cipher.encrypt(data.encode('utf8'))
# 使用Base64进行编码,返回byte字符串
encodestrs = base64.b64encode(encryptedbytes)
# 对byte字符串按utf-8进行解码
enctext = encodestrs.decode('utf8')
return enctextdef AES_Decrypt(key, data): #解密过程也就是加密过程的逆过程
vi = '0102030405060708' #密钥偏移量
#转成byte字符串
data = data.encode('utf8')
# 使用base64解码,将加密数据转换位bytes类型数据
encodebytes = base64.decodebytes(data)
#下面两行代码对数据解密操作
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
text_decrypted = cipher.decrypt(encodebytes)
#因为CBC模式AES加密需要满足加密数据长度是密钥长度的整数倍,所以数据后面可能有不需要的后来添加的数据,所以我们就去掉
#因为添加后缀的时候按照“16 - len(s)%16”,那么后面那个字符的码值也就是原串原来长度差了多少是16整数倍
unpad = lambda s: s[0:-s[-1]]
text_decrypted = unpad(text_decrypted)
text_decrypted = text_decrypted.decode('utf8')
return text_decryptedkey = '0CoJUm6Qyw8W8jud'
data = 'sdadsdsdsfd'
AES_Encrypt(key, data)
enctext = AES_Encrypt(key, data)
print(enctext)
text_decrypted = AES_Decrypt(key, enctext)
print(text_decrypted)hBXLrMkpkBpDFsf9xSRGQQ==
sdadsdsdsfd
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,958
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,482
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,328
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,111
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,743
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,777