前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python AES对称加密示例

python AES对称加密示例

作者头像
py3study
发布2020-01-08 18:33:18
1.1K0
发布2020-01-08 18:33:18
举报
文章被收录于专栏:python3python3

基本概念:

高级加密标准(英语:Advanced Encryption Standard,缩写:AES)

注意点:

1.字符集处理

2.秘钥的生成,建议按照某种规则产生,比如对用户id进行一定规则加工后,进行md5计算,再从中取出16个字节,这样每条数据的加密秘钥不一样,防止被碰撞

3.秘钥的长度,key可以是16/24/32 位长度, 其对应为 AES-128,AES-196 和 AES-256

4.测试源码的加密方式仅限于在服务器加解密,比如存到数据库前进行加密,防脱裤

测试源码:

代码语言:javascript
复制
#!/usr/bin/env python
#coding=utf8

from Crypto.Cipher import AES
from Crypto import Random

# AES根据16位对齐
BS = 16

# 转成utf8编码
def unicode_to_utf8(s):
    if isinstance(s, unicode):
        s = s.encode("utf-8")
    return s


# 补充字符,最少1个
def pad(s):
    length = len(s)
    add = BS - length % BS
    byte = chr(BS - length % BS)
    return s + (add * byte)


# 去除补充字符
def unpad(s):
    length = len(s)
    byte = s[length-1:]
    add = ord(byte)
    return s[:-add]


# class
class AESCipher:
    #初始化
    def __init__(self, key):
        self.key = key

    #加密
    def encrypt(self, raw):
        raw = unicode_to_utf8(raw)
        raw = pad(raw)
        cipher = AES.new(self.key, AES.MODE_CBC, self.key)
        return cipher.encrypt(raw)

    #解密
    def decrypt(self, enc):
        cipher = AES.new(self.key, AES.MODE_CBC, self.key)
        return unpad(cipher.decrypt(enc))


if __name__ == '__main__':
    
    #注意key是16字节长
    key = "f2c85e0140a47415"
    
    #初始化
    aes = AESCipher(key)

    s1 = "hello world"
    s2 = "带鱼拯救世界"
    s3 = "~!@#$%^&"
    s4 = u"~!@#¥%……&带鱼拯救world"

    en1 = aes.encrypt(s1)
    de1 = aes.decrypt(en1)

    en2 = aes.encrypt(s2)
    de2 = aes.decrypt(en2)

    en3 = aes.encrypt(s3)
    de3 = aes.decrypt(en3)

    en4 = aes.encrypt(s4)
    de4 = aes.decrypt(en4)

    print 's1:', de1
    print 's2:', de2
    print 's3:', de3
    print 's4:', de4

原文出自:http://blog.csdn.net/daiyudong2020/article/details/62088583

End;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档