欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何基于python3和Vue實現(xiàn)AES數(shù)據(jù)加密

 更新時間:2020年03月27日 15:00:54   作者:拐彎  
這篇文章主要介紹了如何基于python3和Vue實現(xiàn)AES數(shù)據(jù)加密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

高級加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密算法(微信小程序加密傳輸就是用這個加密算法的)。對稱加密算法也就是加密和解密用相同的密鑰,具有以下幾個特點:

1、最常用的對稱加密算法
2、密鑰建立時間短、靈敏性好、內(nèi)存需求低
3、實際使用中,使用工作模式為CTR(最好用BC去實現(xiàn)),此工作模式需要引入IV參數(shù)(16位的字節(jié)數(shù)組)
4、密鑰長度128/192/256,其中192與256需要配置無政策限制權(quán)限文件(JDK6)
5、填充模式最常用的兩種PKCS5Padding和PKCS7Padding,其中后者只有BC獨有。
6、加密和解密用到的密鑰是相同的,這種加密方式加密速度非??欤m合經(jīng)常發(fā)送數(shù)據(jù)的場合。

python (ECB)應用

安裝:

Windows : pip install pycryptodome

Linux : pip install pycrypto

import base64
import json
import re

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad


class AesCrypt(object):
  """
  AES 加密組件
  """

  def __init__(self, user, is_json=True):

    # 這里的密鑰長度必須是 16 24 32
    key = 'suiyi_' + user.get('Auth')
    self.is_json = is_json
    self.encode_ = 'utf-8'
    self.key = self.add_32(key)
    print(self.key)
    self.aes = AES.new(self.key, AES.MODE_ECB) # 創(chuàng)建一個aes對象

  def add_32(self, key):
    """
    key 補齊32位
    :param key:
    :return:
    """
    # 字符串 a 不要小于32位
    a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
    key += a
    key = key[0:32]
    return key.encode(self.encode_)

  def aes_encrypt(self, text):
    """
    加密 支持 json 需在實例中制動 is_json = True
    :param text:
    :return:
    """
    if self.is_json:
      text = json.dumps(text, ensure_ascii=False)
    text = pad(text.encode('utf-8'), AES.block_size, style='pkcs7')
    encrypt_text = self.aes.encrypt(text)
    return base64.encodebytes(encrypt_text).decode().strip()

  def aes_decrypt(self, text):
    """
    解密 支持 json 需在實例中制動 is_json = True
    :param text:
    :return:
    """
    text = base64.decodebytes(text.encode(self.encode_))
    decrypt_bytes = self.aes.decrypt(text)
    decrypt_text = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', decrypt_bytes.decode(
      self.encode_))
    if self.is_json:
      decrypt_text = json.loads(decrypt_text)
    return decrypt_text
if __name__ == '__main__':
  user = {'Auth': '0000_zhangziyi'}
  pr = AesCrypt(user, is_json=True)
  data = {"unit": 1, "theme": "cur", "look_detail": True, "zero_empty": True, "zero_hide": True, "data_type": "sum"}
  en_text = pr.aes_encrypt(data)
  print('密文:', en_text)
  pr2 = AesCrypt(user, is_json=True)
  print('明文:', pr2.aes_decrypt(en_text))

Vue (ECB)應用

安裝:

cnpm install crypto-js --save

import store from '@/store'
import CryptoJS from 'crypto-js/crypto-js'

function add_secret_key (userAuth) {
 let key = 'suiyi_' + userAuth
 if (key.length < 32) {
  let a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
  key += a.slice(0, 32 - key.length)
 } else if (key.length > 32) {
  key = key.slice(0, 32)
 }
 console.log(key)
 return key

}

/**
 * 加密
 * @param wordimport { aes_encrypt, aes_decrypt } from '../../libs/crypto'

aes_encrypt(this.data)
aes_decrypt(this.AES_data)
 * @param userAuth代碼
 * @param is_json
 * @returns {string}
 */
export const aes_encrypt = (word, userAuth, is_json = true) => {
 if (is_json) {
  word = JSON.stringify(word)
 }
 var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth)) // s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set
 var srcs = CryptoJS.enc.Utf8.parse(word)
 var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
 return encrypted.toString()
}
/**
 * 解密
 * @param word
 * @param userAuth
 * @param is_json
 * @returns {string}
 */
export const aes_decrypt = (word, userAuth, is_json = true) => {
 var key = CryptoJS.enc.Utf8.parse(add_secret_key(userAuth))// s/iqSaaE0F3tsLgMCkCZjvqptKKzqD9/pMUnMkCwNjg= Set
 var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
 let decrypt_text = CryptoJS.enc.Utf8.stringify(decrypt).toString()
 if (is_json) {
  decrypt_text = JSON.parse(decrypt_text)
 }
 return decrypt_text
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡單介紹一下pyinstaller打包以及安全性的實現(xiàn)

    簡單介紹一下pyinstaller打包以及安全性的實現(xiàn)

    這篇文章主要介紹了簡單介紹一下pyinstaller打包以及安全性的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • OpenCV+face++實現(xiàn)實時人臉識別解鎖功能

    OpenCV+face++實現(xiàn)實時人臉識別解鎖功能

    這篇文章主要為大家詳細介紹了OpenCV+face++實現(xiàn)實時人臉識別解鎖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python socket多線程實現(xiàn)客戶端與服務器連接

    python socket多線程實現(xiàn)客戶端與服務器連接

    這篇文章主要為大家詳細介紹了python socket多線程實現(xiàn)客戶端與服務器連接,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python計算圓周長、面積、球體體積并畫出圓

    python計算圓周長、面積、球體體積并畫出圓

    這篇文章主要介紹了python計算圓周長、面積、球體體積并畫出圓(python3+PyObject+Gtk實現(xiàn)界面聯(lián)動),需要的朋友可以參考下
    2014-04-04
  • 使用Python的內(nèi)建模塊collections的教程

    使用Python的內(nèi)建模塊collections的教程

    這篇文章主要介紹了使用Python的內(nèi)建模塊collections的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 為什么稱python為膠水語言

    為什么稱python為膠水語言

    在本篇文章里小編給大家分享的是關(guān)于python為何稱為膠水語言的相關(guān)知識點,需要的朋友們可以學習參考下。
    2020-06-06
  • Python中的pathlib.Path為什么不繼承str詳解

    Python中的pathlib.Path為什么不繼承str詳解

    這篇文章主要給大家介紹了關(guān)于Python中pathlib.Path為什么不繼承str的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • 使用OpenCV實現(xiàn)人臉圖像卡通化的示例代碼

    使用OpenCV實現(xiàn)人臉圖像卡通化的示例代碼

    這篇文章主要介紹了使用OpenCV實現(xiàn)人臉圖像卡通化的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python的簡單四則運算語法樹可視化

    python的簡單四則運算語法樹可視化

    這篇文章主要介紹了python的簡單四則運算語法樹可視化,這篇文章的內(nèi)容也很簡單,就是給定一個四則運算的表達式,畫出它的語法樹,需要的朋友可以參考下
    2023-04-04
  • Python 爬蟲學習筆記之正則表達式

    Python 爬蟲學習筆記之正則表達式

    正則表達式是用來匹配字符串非常強大的工具,在其他編程語言中同樣有正則表達式的概念,Python同樣不例外,利用了正則表達式,我們想要從返回的頁面內(nèi)容提取出我們想要的內(nèi)容就易如反掌了。
    2016-09-09

最新評論