精易论坛

标题: AES加密问题 [打印本页]

作者: fx82608171    时间: 2025-4-9 15:00
标题: AES加密问题
易语言和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())



作者: 石榴熟了    时间: 2025-4-9 16:23
aes+rsa啊


      
作者: 155能不能    时间: 2025-4-9 16:36
你这py源码没导入模块
作者: 155能不能    时间: 2025-4-9 16:45
根据需求,您希望生成一个易语言的例子来调用 get_models() 函数。但是,您提供的需求文本中并没有要求修改现有的 Python 代码,而是希望得到一个易语言的示例代码。因此,我将提供一个易语言的示例代码来调用 get_models() 函数。 以下是易语言的示例代码:
作者: 155能不能    时间: 2025-4-9 16:46
易语言::D:\py代码\易语言示例.e::34563329-51a9-4f00-83fd-12c7ed0d8128
作者: 155能不能    时间: 2025-4-9 16:46
请注意,上述示例代码中的 encrypt 函数调用部分是假设的,因为易语言无法直接调用 Python 函数。您需要通过某种方式(例如通过命令行、网络请求或其他方式)将参数传递给 Python 脚本并获取加密后的数据和密钥。 如果您需要进一步的帮助或具体的实现细节,请告诉我。
作者: qinfeng0214    时间: 2025-4-9 17:41
  
子程序名返回值类型公开备 注
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互联网服务器套件





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4