开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 284|回复: 6
收起左侧

[python] AES加密问题

[复制链接]
结帖率:47% (8/17)
发表于 7 天前 | 显示全部楼层 |阅读模式   湖北省襄阳市
10精币
易语言和py通讯,我要get一下,但是py加密,懂py的帮写个易语言的例子,get_models()



[Python] 纯文本查看 复制代码
def encrypt(params, key, public_key=PUBLIC_KEY):
    data = json.dumps(params).encode('utf-8')
    key = key.encode('utf-8')
    # 生成 AES 密码器,使用 ECB 模式
    aes_cipher = AES.new(key, AES.MODE_ECB)
    padded_data = pad(data, AES.block_size)
    encrypted_data = aes_cipher.encrypt(padded_data)
    encrypted_data = base64.b64encode(encrypted_data).decode('utf-8')

    key = base64.b64encode(key)
    public_key = RSA.import_key(public_key.encode('utf-8'))
    rsa_cipher = PKCS1_OAEP.new(public_key)
    encrypted_key = rsa_cipher.encrypt(key)
    encrypted_key = base64.b64encode(encrypted_key).decode('utf-8')

    return encrypted_data, encrypted_key


def get_models():
    url = 'http://127.0.0.1:9999/models'

    aeskey = "".join(random.sample(string.ascii_letters + string.digits, 32))
    params = {
        "timestamp": int(time.time())
        }
    
    encrypted_data, encrypted_key = encrypt(params, aeskey)

    payload = {
        "data": encrypted_data,
    }
    headers = {
        "key": encrypted_key
    }

    res = requests.get(url, params=payload, headers=headers)
    print(res.status_code)
    if res.status_code != 200:
        print(res.text)
    else:
        print(res.json())



回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:100% (5/5)

签到天数: 15 天

发表于 7 天前 | 显示全部楼层   河南省洛阳市
aes+rsa啊


      
回复

使用道具 举报

签到天数: 3 天

发表于 7 天前 | 显示全部楼层   江苏省*
你这py源码没导入模块
回复

使用道具 举报

签到天数: 3 天

发表于 7 天前 | 显示全部楼层   江苏省*
根据需求,您希望生成一个易语言的例子来调用 get_models() 函数。但是,您提供的需求文本中并没有要求修改现有的 Python 代码,而是希望得到一个易语言的示例代码。因此,我将提供一个易语言的示例代码来调用 get_models() 函数。 以下是易语言的示例代码:
回复

使用道具 举报

签到天数: 3 天

发表于 7 天前 | 显示全部楼层   江苏省*
易语言::D:\py代码\易语言示例.e::34563329-51a9-4f00-83fd-12c7ed0d8128
回复

使用道具 举报

签到天数: 3 天

发表于 7 天前 | 显示全部楼层   江苏省*
请注意,上述示例代码中的 encrypt 函数调用部分是假设的,因为易语言无法直接调用 Python 函数。您需要通过某种方式(例如通过命令行、网络请求或其他方式)将参数传递给 Python 脚本并获取加密后的数据和密钥。 如果您需要进一步的帮助或具体的实现细节,请告诉我。
回复

使用道具 举报

结帖率:91% (20/22)

签到天数: 9 天

发表于 7 天前 | 显示全部楼层   北京市北京市
  
子程序名返回值类型公开备 注
get_models  
变量名类 型静态数组备 注
公钥文本型 
aeskey文本型 
params文本型 
数据字节集 
填充后的数据字节集 
encrypted_data字节集 
encrypted_key字节集 
encrypted_data_base64文本型 
encrypted_key_base64文本型 
url文本型 
headers文本型 
响应字节集 
对称密钥加解密_对称加密 
RSA加解密_非对称加密 
公钥 = "替换为你的PUBLIC_KEY内容"
' 1. 生成32位随机AES密钥
aeskey = 生成随机密钥 ()
调试输出 ("AES密钥:", aeskey)
' 2. 构造请求参数
params = "{” + #引号 + “timestamp” + #引号 + “:” + 到文本(取现行时间戳()) + }"
数据 = 到字节集 (params)
调试输出 ("原始参数:", params)
' 3. AES加密处理
填充后的数据 = PKCS7填充 (数据, 16)
对称密钥.创建 ( #算法_AES, 到字节集 (aeskey), #填充方式_PKCS7, , #对称加密模式_ECB )
encrypted_data = 对称密钥.加密 (填充后的数据)
encrypted_data_base64 = 编码_BASE64编码 (encrypted_data)
调试输出 ("AES加密结果:", encrypted_data_base64)
' 4. RSA加密密钥
RSA.导入公钥文本 (公钥)
encrypted_key = RSA.加密 (编码_BASE64编码 (到字节集 (aeskey)), #填充方式_PKCS1_OAEP )
encrypted_key_base64 = 编码_BASE64编码 (encrypted_key)
调试输出 ("RSA加密密钥:", encrypted_key_base64)
' 5. 发送HTTP请求
url = "http://127.0.0.1:9999/models?data=" + encrypted_data_base64
headers = "key: " + encrypted_key_base64
响应 = 网页_访问 (url, 0, , , , headers)
调试输出 ("响应状态码:", 取响应状态码 (响应))
调试输出 ("响应内容:", 到文本 (响应))
子程序名返回值类型公开备 注
生成随机密钥文本型 
变量名类 型静态数组备 注
字符集文本型 
i整数型 
位置整数型 
字符集 = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”
置随机数种子 ()
计次循环首 (32, i)
位置 = 取随机数 (1, 取文本长度 (字符集))
结果 = 结果 + 取文本中间 (字符集, 位置, 1)
计次循环尾 ()
返回 结果
子程序名返回值类型公开备 注
PKCS7填充字节集 
参数名类 型参考可空数组备 注
原始数据字节集
块大小整数型
变量名类 型静态数组备 注
需要填充整数型 
填充字节字节集 
需要填充 = 块大小 (取字节集长度 (原始数据) % 块大小)
如果真 (需要填充 = 0)
需要填充 = 块大小
填充字节 = 取重复字节集 (需要填充, 到字节 (需要填充))
返回 原始数据 + 填充字节
子程序名返回值类型公开备 注
取现行时间戳长整数型 
返回 到长整数 (取时间间隔 (取现行时间 (), 到时间 ("1970-01-01 08:00:00"), #秒 ))


i支持库列表   支持库注释   
dp1数据操作支持库一
spec特殊功能支持库
e2eeE2EE互联网服务器套件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表