python使用Crypto库实现加密解密

这篇具有很好参考价值的文章主要介绍了python使用Crypto库实现加密解密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:crypto库安装

pycrypto,pycryptodome是crypto第三方库,pycrypto已经停止更新三年了,所以不建议安装这个库;pycryptodome是pycrypto的延伸版本,用法和pycrypto 是一模一样的;所以只需要安装pycryptodome就可以了文章来源地址https://www.toymoban.com/news/detail-548577.html

pip install pycryptodome

二:python使用crypto

1:crypto的加密解密组件des.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Crypto.Cipher import DES
from binascii import b2a_hex, a2b_hex
class MyDESCrypt: #自己实现的DES加密类
    def __init__(self, key = ''):
        #密钥长度必须为64位,也就是8个字节
        if key is not '':
            self.key = key.encode('utf-8')
        else:
            self.key = '12345678'.encode('utf-8')
        self.mode = DES.MODE_CBC
    # 加密函数,如果text不足16位就用空格补足为16位,
    # 如果大于16当时不是16的倍数,那就补足为16的倍数。
    def encrypt(self,text):
        try:
            text = text.encode('utf-8')
            cryptor = DES.new(self.key, self.mode, self.key)
            # 这里密钥key 长度必须为16(DES-128),
            # 24(DES-192),或者32 (DES-256)Bytes 长度
            # 目前DES-128 足够目前使用
            length = 16   #lenth可以设置为8的倍数
            count = len(text)
            if count < length:
                add = (length - count)
                # \0 backspace
                # text = text + ('\0' * add)
                text = text + ('\0' * add).encode('utf-8')
            elif count > length:
                add = (length - (count % length))
                # text = text + ('\0' * add)
                text = text + ('\0' * add).encode('utf-8')
            self.ciphertext = cryptor.encrypt(text)
            # 因为DES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题
            # 所以这里统一把加密后的字符串转化为16进制字符串
            return b2a_hex(self.ciphertext)
        except:
            return ""
    # 解密后,去掉补足的空格用strip() 去掉
    def decrypt(self, text):
        try:
            cryptor = DES.new(self.key, self.mode, self.key)
            plain_text = cryptor.decrypt(a2b_hex(text))
            # return plain_text.rstrip('\0')
            return bytes.decode(plain_text).rstrip('\0')
        except:
            return ""

2:crypto组件使用

from . import des
msg = "password is 961223"
key = "12345678"  #key值可传可不传
des1 = des.MyDESCrypt()
#加密
cipherTxt = des1.encrypt(msg)  #返回值为bytes型
print(cipherTxt)
#解密
decTxt = des1.decrypt(cipherTxt);  #返回值为str型
print(decTxt)

到了这里,关于python使用Crypto库实现加密解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hutool-crypto 加密、解密详解!

    在Java开发的过程中,很多场景下都需要加密解密。 比如对敏感数据的加密,对配置文件信息的加密,通信数据的加密等等。 今天介绍的是Hutool工具包中的加密模块 crypto。 加密分为三类: 对称加密(symmetric) 常用的有AES、DES 非对称加密(asymmetric) 常用的有RSA,DSA 摘要加

    2024年02月06日
    浏览(91)
  • Java:Hutool工具箱之Hutool-crypto加密解密

    文档 https://hutool.cn/docs/#/crypto/概述 重点单词: 摘自文档 依赖 以MD5 为例 以AES 加密为例 这里有个问题,如果秘钥长度不够16位,会报错 长度只能是16位,24位,32位 参考 https://toscode.gitee.com/dromara/hutool/issues/I4O1EB 以RSA为例

    2024年02月16日
    浏览(83)
  • 【RSA加密/解密】PKCS1_OAEP和PKCS1_v1_5两种填充方案【python RSA密钥对生成、密码加密、密文解密、pycharm安装Crypto】

    一、PKCS1_OAEP和PKCS1_v1_5是公钥加密标准中的两种填充方案。 PKCS1_OAEP(Optimal Asymmetric Encryption Padding)是一种更安全的填充方案,它提供了更好的安全性和抗攻击性。它使用随机数进行填充,并引入了哈希函数来增加安全性。 PKCS1_v1_5是较旧的填充方案,它使用固定的填充字节序

    2024年02月06日
    浏览(61)
  • 关于怎么使用python实现 3DES 加密/解密

    3DES (Triple DES) 是一种对称加密算法,其特点是使用三次密钥加密来提高安全性。 3DES的原理是:对明文进行三次加密,每次加密的密钥不同。加密时,首先使用第一个密钥对明文进行加密,然后使用第二个密钥对加密后的数据进行解密,最后再使用第三个密钥对解密后的数据

    2024年02月15日
    浏览(40)
  • 使用Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录

    兄弟们天天看基础看腻了吧 今天来分享一下如何使用Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录。 目标:某 7 网游登录 主页:aHR0cHM6Ly93d3cuMzcuY29tLw== 接口:aHR0cHM6Ly9teS4zNy5jb20vYXBpL2xvZ2luLnBocA== 逆向参数:Query String Parameters: password: SlVEOThrcjgzNDNjaUYxOTQzNDM0eVM

    2023年04月13日
    浏览(65)
  • Python实现希尔加密/解密

    希尔加密的原理就不多讲了,直接上代码。 定义一个函数:def fun(s, mod1, mod2, key) s:要加密/解密的字符串 mod1:加密或解密 mod2:A=0或A=1,目前网络上的希尔加密都不是统一的,两种模式得出的结果是不一样的。 key:密钥,转换为矩阵后必须为方阵且可逆 要有传入的参数,key的长

    2023年04月19日
    浏览(44)
  • AES加密解密python实现

            关于现代密码学算法,可以查看以下博客全面了解 CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲_晓翔仔的博客-CSDN博客         AES的细节知识,可以查阅 AES加密算法的详细介绍与实现_TimeShatter的博客-CSDN博客          AES 加密最常用的模式就是

    2024年02月05日
    浏览(79)
  • Python:实现密码加密解密(含完整源码)

    Python:实现密码加密解密(含完整源码) 密码加密是保护用户隐私的一种有效手段。本文将讲解如何使用Python编写一个简单的密码加密解密程序,并提供完整源代码。 步骤一:安装依赖库 我们需要使用到pycrypto库来实现密码加密解密的功能。安装pycrypto库,可以通过pip命令进

    2024年02月14日
    浏览(41)
  • 使用非对称加密(RSA) 实现前端加密后端解密

    数据加密方式有: 单向加密、对称加密、非对称加密、加密盐、散列函数、数字签名。 1、单向加密 单向加密通过对数据进行摘要计算生成密文,密文不可逆推还原。只能加密,不能解密,常用于提取数据的指纹信息以此来验证数据的完整性。但是会引发雪崩效应(雪崩效应

    2024年02月08日
    浏览(69)
  • Python实现对文件或文件夹的加密/解密

      这个代码实现了对文件夹内指定类型文件的加密和解密操作,使用了base64库对文件进行加密和解密,使用os模块进行遍历目录,判断文件类型,并进行加密和解密操作,最后实现了文件删除和写入操作 代码实例:

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包