首页 > 其他分享 >加密解密

加密解密

时间:2024-01-25 16:37:11浏览次数:24  
标签:加密 encryptor 解密 密钥 key 加密算法

1 加密算法如何选择

 

对称加密算法(如AES)使用相同的密钥进行加密和解密操作,加解密速度较快,适合大量数据的加密和解密。然而,对称加密算法的主要安全隐患在于密钥的分发和管理。如果密钥泄露,攻击者可以使用密钥对加密的数据进行解密。因此,对称加密算法在保护密钥的安全性方面需要额外的措施,如安全的密钥交换和存储机制。

 

非对称加密算法(如RSA)使用一对密钥,公钥和私钥。公钥用于加密数据,私钥用于解密数据。非对称加密算法具有更好的密钥管理和分发特性,因为只需要保护私钥的安全性,而公钥可以公开发布。此外,非对称加密算法还可以用于数字签名和密钥交换等场景。然而,非对称加密算法的加解密速度较慢,适合加密较小量的数据或用于密钥交换。

 

在实际应用中,通常会将对称加密和非对称加密结合使用。常见的做法是使用非对称加密算法进行密钥交换和身份验证,然后使用对称加密算法进行加密通信。这样可以兼顾了安全性和性能。

 

综上所述,选择加密算法应根据具体需求和场景来评估其安全性和性能,并采取适当的措施来保护密钥的安全性

 

2 示例代码

1) 对称加密

from cryptography.fernet import Fernet

# 生成密钥
def generate_key():
    """
    生成一个随机的加密密钥
    生成的密钥是一个字节串
    """
    return Fernet.generate_key()


# 初始化加密器
def initialize_encryptor(key):
    """
    该函数接受一个密钥作为参数,并使用该密钥初始化一个Fernet对象。这个对象可以用来进行加密和解密操作
    接收一个密钥作为参数, 并使用改密钥初始化一个Fernet对象.这个对象用来加密和解密操作
    """
    return Fernet(key)


# 加密数据
def encrypt_data(encryptor, data):
    return encryptor.encrypt(data.encode())


# 解密数据
def decrypt_data(encryptor, encrypted_data):
    return encryptor.decrypt(encrypted_data).decode()


key = generate_key()  # 生成密钥
print(f'密钥:{key}')
encryptor = initialize_encryptor(key)  # 初始化加密器

# 加密请求参数
param = 'hello'
encrypted_param = encrypt_data(encryptor, param)
print(f'加密后数据:{encrypted_param}')

# 执行业务逻辑(在此处进行解密操作)
decrypted_param = decrypt_data(encryptor, encrypted_param)
print(f'解密后数据:{decrypted_param}')
View Code

 

2) 非对称加密

 

标签:加密,encryptor,解密,密钥,key,加密算法
From: https://www.cnblogs.com/tslam/p/17987442

相关文章

  • c++ openssl加密 解密
    #include<iostream>#include<boost/asio.hpp>#include<boost/beast.hpp>#include<boost/beast/websocket.hpp>#include<boost/asio/spawn.hpp>#include<json.hpp>#include<boost/filesystem.hpp>#include<fstrea......
  • SHELL AES ECB 加密解密
    SHELLAESECB加密解密AES(高级加密标准)算法可以使用ECB模式进行加密和解密。在Shell中,我们可以通过openssl命令来进行AES的ECB加密和解密操作。下面是示例代码:安装OpenSSL工具包(如果未安装):sudoapt-getinstallopenssl创建一个名为encrypt_decrypt.sh的脚本文件并编写以下......
  • 关于“公钥加密私钥解密,私钥加签公钥验签”的一些理解
    看了网上的很多资料,发现有些点没有说到,也比较复杂,这里根据个人的理解,简单描述,方便记忆。 先理解公/私钥(yue)的意思:私钥,即 私人 的钥匙,是唯一的,所以可以用来证明来源是特定的人公钥,即 公用 的钥匙,我可以将它给很多人(公众)。所以既然那么多人都知道,所以公钥并不能证明来源......
  • 数据加密如何帮助防止企业数据泄露?
    数据加密是预防企业数据泄露的重要策略之一。这种保护措施的主要工作原理是通过将信息转变为不能被未经授权的人理解的格式,从而防止数据在传输、处理或存储过程中被盗或丢失。以下是数据加密在防止数据泄露中的主要作用:保护敏感信息:任何公司都会拥有一些敏感信息,比如金融信息......
  • Java Chassis 3技术解密:易扩展的多种注册中心支持
    原文链接:https://bbs.huaweicloud.com/blogs/420748JavaChassis的早期版本依赖于ServiceCenter,提供了很多差异化的竞争力:接口级别转发。通过注册中心管理微服务的每个版本的元数据,特别是契约数据。结合契约数据,能够实现版本级别的路由能力。比如一个微服务存在v1和v2两......
  • 【APP逆向10】Java中常见加密与python实现
    1.隐藏字节,Stringv4=newString(newbyte[]{-26,-83,-90,-26,-78,-101,-23,-67,-112});byte_list=[-26,-83,-90,-26,-78,-101,-23,-67,-112]bs=bytearray()#python字节数组foriteminbyte_list:ifitem<0:item=item+256......
  • vue2项目使用jsencrypt.js实现分段加密解密
    安装:npminstall jsencrypt安装:npminstall js-base64组件:demo.vue<template></template><script>import{SM4Encrypt,SM4Decrypt}from'@/assets/des.js'importtestImportJsonfrom'@/assets/data.json'exportdefault{......
  • 实战:加密传输数据解密
    前言下面将分享一些实际的渗透测试经验,帮助你应对在测试中遇到的数据包内容加密的情况。我们将以实战为主,技巧为辅,进入逆向的大门。技巧开局先讲一下技巧,掌握好了技巧,方便逆向的时候可以更加快速的找到关键函数位置!后续也会有更多的实战会按照技巧去操作。关键词搜索一:在js......
  • tar zip加密压缩、解压
    tar加密压缩tar-zcvf-./packageTest|openssldes3-salt-k'yourpassword'|ddof=meiyou.tar.gztar加密解压ddif=meiyou.tar.gz|openssldes3-d-k'yourpassword'|tarzxf-zip加密压缩zip-rP'yourpassword'packageTest.zippackag......
  • 虾皮购物利器:Shopee买家通系统完美解密
    Shopee买家通系统作为一款专门为虾皮买家号打造的软件,致力于模拟人类真实行为,使得购物操作看起来更加真实和自然。这款软件不仅具备一键批量注册Shopee买家号的能力,还提供了多项强大功能,让购物变得更加轻松愉快。1、完全模拟真实行为Shopee买家通系统通过完全模拟人类真实行为,确保......