gpt4 book ai didi

Python AES加密实例解析

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python AES加密实例解析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文主要是对aes加密技术做一个简要分析,然后使用Python实现,具体介绍如下.

AES,是美国联邦政府采用的一种加密技术,AES有几个模式,其中CBC模式是公认的安全性最好的模式,被TLS所采用.

加密与解密双方需确定好key,key的长度可以是16位,24位,32位中的一个,分别对应了不同的算法.

如果key的长度是是16位的,那么被加密的明文长度必须是16的整数倍,但实际使用中,这么巧的事情很难发生,因此就需要对明文进行填充,最常用的方式就是填充\0,等到解密的时候,再把解密出来的明文右侧的\0全部去掉。你也许会关心,如果我明文最右侧原本就是一堆的\0,那么这么搞,岂不是要出问题么,是滴,确实会出问题,但这样的明文用来做什么呢?你想多了,这样的明文你这辈子恐怕都不会遇到.

下面看一段python示例代码,演示如何使用AES加密技术进行加密和解密 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#coding=utf-8
'''''
加密的一方和解密的一方必须提前确定好key值
'''
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
 
class MyCrypto():
   def __init__( self , key):
     self .key_len = len (key)
     if not self .key_len = = 16 and not self .key_len = = 24 and not self .key_len = = 32 :
       raise Exception( "length of key is wrong" )
     self .key = key
     self .mode = AES.MODE_CBC  #这种模式更加安全
 
   def encrypt( self , text):
     '''''
       被加密的明文长度必须是key长度的整数倍,如果不够,则用\0进行填充
       转成16进制字符串,是因为避免不可见的ascii在显示的时候捣乱
     '''
     cryptor = AES.new( self .key, self .mode, self .key)
     count = len (text)
     add = self .key_len - (count % self .key_len)
     text = text + ( '\0' * add)
     self .ciphertext = cryptor.encrypt(text)
     return b2a_hex( self .ciphertext)
 
 
   def decrypt( self , text):
     '''''
       解密后需注意,加密时有可能填充\0,因此要去掉右侧的\0
     '''
     cryptor = AES.new( self .key, self .mode, self .key)
     plain_text = cryptor.decrypt(a2b_hex(text))
     return plain_text.rstrip( '\0' )
 
 
if __name__ = = '__main__' :
   mc = MyCrypto( "kwsy_zds20160822" )
   e = mc.encrypt( "张东升" )
   d = mc.decrypt(e)
   print e,d

总结 。

以上就是本文关于Python AES加密实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持! 。

原文链接:http://blog.csdn.net/kwsy2008/article/details/52274957 。

最后此篇关于Python AES加密实例解析的文章就讲到这里了,如果你想了解更多关于Python AES加密实例解析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com