首页 > 其他分享 >md5,aes,ras

md5,aes,ras

时间:2024-03-21 10:00:35浏览次数:25  
标签:__ aes 加密 AES ras key data md5

md5加密

import hashlib

# md5加密
def md5_encrypt(data):
    # 创建一个md5加密器
    md5 = hashlib.md5()
    # 更新加密器的状态,这需要输入的字符串转为为字节串
    md5.update(data.encode('utf-8'))
    # 获取加密后的16进制字符串
    return md5.hexdigest()


if __name__ == '__main__':
    """测试md5加密"""
    data = '123456'
    print(md5_encrypt(data))




aes加密与解密

# pip install  pycryptodome
"""
AES(高级加密标准)是一种广泛使用的对称加密算法,
适用于需要高度安全性的场景。在Python中,
可以使用pycryptodome库来实现AES加密。这个库是pycrypto的一个分支,
提供了更加安全和易用的API。
"""
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad


def aes_encrypt(key, data):
    # 创建AES加密器,使用CBC模式
    cipher = AES.new(key, AES.MODE_CBC)

    # 加密数据,数据需要先被填充到合适的长度
    ct_bytes = cipher.encrypt(pad(data, AES.block_size))

    # 返回初始化向量和加密后的数据
    # 注意:在实际应用中,你需要将iv(初始化向量)与加密后的数据一起保存或传输,以便于解密
    return cipher.iv, ct_bytes


def aes_decrypt(key, iv, ct):
    # 使用相同的密钥和模式创建解密器,同时提供初始化向量
    cipher = AES.new(key, AES.MODE_CBC, iv)

    # 解密数据并去除填充
    pt = unpad(cipher.decrypt(ct), AES.block_size)
    return pt


if __name__ == '__main__':

    # 示例使用
    key = get_random_bytes(16)  # AES密钥,长度可以是16(AES-128),24(AES-192)或32(AES-256)字节
    data = b"123456"  # 待加密的原始数据

    # 加密
    iv, encrypted_data = aes_encrypt(key, data)
    print(f"Encrypted data: {encrypted_data}")

    # 解密
    decrypted_data = aes_decrypt(key, iv, encrypted_data)
    print(f"Decrypted data: {decrypted_data}")

ras加密与解密

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii

def generate_rsa_keypair(key_size=2048):
    """
    生成RSA密钥对
    :param key_size: 密钥长度
    :return: (公钥, 私钥)
    """
    key = RSA.generate(key_size)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    return public_key, private_key

def rsa_encrypt(public_key, data):
    """
    使用RSA公钥加密数据
    :param public_key: RSA公钥
    :param data: 要加密的数据
    :return: 加密后的数据
    """
    public_key = RSA.import_key(public_key)
    cipher = PKCS1_OAEP.new(public_key)
    encrypted_data = cipher.encrypt(data)
    return binascii.hexlify(encrypted_data)

def rsa_decrypt(private_key, encrypted_data):
    """
    使用RSA私钥解密数据
    :param private_key: RSA私钥
    :param encrypted_data: 加密后的数据
    :return: 原始数据
    """
    private_key = RSA.import_key(private_key)
    cipher = PKCS1_OAEP.new(private_key)
    decrypted_data = cipher.decrypt(binascii.unhexlify(encrypted_data))
    return decrypted_data


if __name__ == '__main__':

    # 示例
    public_key, private_key = generate_rsa_keypair()
    data = b'Hello, RSA!'

    # 加密
    encrypted_data = rsa_encrypt(public_key, data)
    print(f"Encrypted data: {encrypted_data}")

    # 解密
    decrypted_data = rsa_decrypt(private_key, encrypted_data)
    print(f"Decrypted data: {decrypted_data.decode('utf-8')}")

标签:__,aes,加密,AES,ras,key,data,md5
From: https://www.cnblogs.com/code3/p/18086702

相关文章

  • Rasterization
    三角面片为什么是三角面片?三角形是最基本的多边形保证在同一个面上非常好的定义内外非常容易定义插值光栅化重要问题之怎么判断像素的中心点在三角形内?叉积的结果应该同号AliasingJaggies【锯齿】Moire【摩尔纹】WagonWheelIllusion。。。。原因最根本的原因......
  • TimesURL: 用于通用时间序列表征学习的自监督对比学习《TimesURL: Self-supervised Co
    2024年3月18日,最近有点忙,但是这周四周五都要汇报,不想往后推了,早汇报完早结束,硬着头皮先看这一篇,这篇年前就说要看,还保存了书签,但是一直没看,今天趁着中午的时间看一下。(现在14:01,开始看,我的草稿箱里躺着的18篇草稿,Sorry,以后有空再填坑.)论文:TimesURL:Self-supervisedContrasti......
  • 密码加密|jsencrypt|md5|加密解密的两种方式
    一、md5npminstallmd5二、JSEncrypt2.1介绍JSEncrypt属于RSA加密,RSA加密算法是一种非对称加密算法;2.2使用安装:npminstalljsencrypt--dev封装工具:utils/jsencrypt.jsimportJSEncryptfrom'jsencrypt/bin/jsencrypt.min'//密钥对生成http://web.cha......
  • 使用 Keras 的 Stable Diffusion 实现高性能文生图
    前言在本文中,我们将使用基于KerasCV实现的StableDiffusion模型进行图像生成,这是由stable.ai开发的文本生成图像的多模态模型。StableDiffusion是一种功能强大的开源的文本到图像生成模型。虽然市场上存在多种开源实现可以让用户根据文本提示轻松创建图像,但Keras......
  • 使用AES进行加解密
    今天来使用aes对sk(一个字段)进行加解密,要求秘钥一半在配置文件,一般写死aes就是一个加解密的工具,有加密和解密二个方法,是可逆的packagecom.huawei.koophone.openpower.common.utils.algo;importlombok.extern.slf4j.Slf4j;importorg.apache.commons.codec.DecoderExcep......
  • vector的Erase相关
    vector<int>Vect; Vect.insert(Vect.begin()+2,50); for(autoit=Vect.begin();it!=Vect.end();++it) { if(*it==50) { Vect.erase(it); } }为什么以上的代码会报错,而下面的一段代码不会报错? vector<int>Vect;Vect.insert(Vect.begin()+2,50);......
  • pyachocorasick库
    pyahocorasick介绍“pyahocorasick”是一个Python的第三方库,用于快速在大量文本中搜索多个关键字。该库的名字来源于“Aho-Corasick”字符串匹配算法,这是一种高效的多模式字符串匹配算法,适用于在一组目标字符串中查找一个或多个关键字的出现。使用“pyahocorasick”......
  • remove vs. erase 【TODO】
    erase:说明:Removesfromthelistcontainereitherasingleelement(position)orarangeofelements([first,last)).Thiseffectivelyreducesthecontainersizebythenumberofelementsremoved,whicharedestroyed.以iterator为单元,对元素进行清除。返回值:Anit......
  • 标准MD5算法(js实现)
    百度百科MD5functionmd5(string){functionmd5_RotateLeft(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits));}functionmd5_AddUnsigned(lX,lY){varlX4,lY4,lX8,lY8,lResult;......
  • ISIS接口MD5 算法认证实验简述
    默认情况下,ISIS接口认证通过在ISIS协议数据单元(PDU)中添加认证字段,例如:MD5算法,用于验证发送方的身份。ISIS接口认证防止未经授权的设备加入到网络中,并确保邻居之间的通信是可信的。它可以有效地防止路由欺骗和其他恶意攻击。MD5(MessageDigestAlgorithm5)是一种常用的信......