zoukankan      html  css  js  c++  java
  • 对称加密之---AES加密

    工作中常会需要让数据传输前进行加密处理。这次用到的是AES加密。AES加密中,需要注意到坑还是挺多的。对AES也进行了一番了解,发现里面的东西真的是注意的太多了。今天只是整理了一种简单的加密格式,工作中使用肯定是够了,想要了解根深的AES加密还是需要再找些资料学习一下。

      首先需要下载python的第三库Crypto:pip install Crypto

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from Crypto.Cipher import AES
    import base64
    import os
    
    BLOCK_SIZE = 16
    PADDING = ''    #文本补全方式
    pad_it = lambda s: s+(16 - len(s)%16)*PADDING 
    key = '16bit'    #key的长度必须为16的倍数
    iv = ‘0000000000000000’  #偏移量
    
    #使用aes算法,进行加密解密操作
    #为跟java实现同样的编码,注意PADDING符号自定义
    #加密
    def encrypt_aes(sourceStr):
        generator = AES.new(key, AES.MODE_CBC, iv) #MODE_CBC为加密模式
        crypt = generator.encrypt(pad_it(sourceStr))
        cryptedStr = base64.b64encode(crypt)
        return cryptedStr
    
    #解密
    def decrypt_aes(cryptedStr):
        generator = AES.new(key, AES.MODE_CBC, iv)
        cryptedStr = base64.b64decode(cryptedStr)
        recovery = generator.decrypt(cryptedStr)
        decryptedStr = recovery.rstrip(PADDING)
        return decryptedStr
    
    sourceStr = 'password^*(&( 09-8ADF'
    
    
    print encrypt_aes(sourceStr)
    print decrypt_aes(encrypt_aes(sourceStr))

    对应的java加密方式看这里:https://www.cnblogs.com/aguncn/p/6069349.html

    下面是AES加密的各个参数对应值

  • 相关阅读:
    【LeetCode】Validate Binary Search Tree
    【LeetCode】Search in Rotated Sorted Array II(转)
    【LeetCode】Search in Rotated Sorted Array
    【LeetCode】Set Matrix Zeroes
    【LeetCode】Sqrt(x) (转载)
    【LeetCode】Integer to Roman
    贪心算法
    【LeetCode】Best Time to Buy and Sell Stock III
    【LeetCode】Best Time to Buy and Sell Stock II
    CentOS 6 上安装 pip、setuptools
  • 原文地址:https://www.cnblogs.com/ppzhang/p/10178926.html
Copyright © 2011-2022 走看看