下面这段python的rsa加密,在火山视窗,要如何实现?
def rsa_enc(raw_data: bytes) -> bytes:"""RSA加密二进制数据,返回二进制"""
pub = RSA.import_key(base64.b64decode(RSA_PUB_B64))
cipher = PKCS1_OAEP.new(pub, hashAlgo=SHA256)
enc_bytes = cipher.encrypt(raw_data)
return enc_bytes
上面这个,在火山视窗,要如何实现?加解密类好像没有这个。
加解密类.加密_RSA_公钥 ()
怎么没有啊。rsa都是通用的。 本帖最后由 guo828587 于 2026-5-20 21:38 编辑
创世魂 发表于 2026-5-20 21:09
加解密类.加密_RSA_公钥 ()
怎么没有啊。rsa都是通用的。
hashAlgo=SHA256怎么传? guo828587 发表于 2026-5-20 21:33
hashAlgo=SHA256怎么传?
填充方式用【RSA填充方式.PKCS1_OAEP】,但火山这个命令没封装摘要算法的细节,所以OAEP填充应该是用了默认的SHA1。 Xelloss0618 发表于 2026-5-21 09:22
填充方式用【RSA填充方式.PKCS1_OAEP】,但火山这个命令没封装摘要算法的细节,所以OAEP填充应该是用了默 ...
所以加密出来就不对了 直接在火山里面调用这段 python 不就完了,原汁原味 飞扬工作室 发表于 2026-5-21 11:13
直接在火山里面调用这段 python 不就完了,原汁原味
我这个就是我自己的python项目,想换火山写啊,如果还要调用pytho,我都直接用python了啊,就是不想带一大堆的库。 guo828587 发表于 2026-5-21 17:38
我这个就是我自己的python项目,想换火山写啊,如果还要调用pytho,我都直接用python了啊,就是不想带一 ...
目前,火山会调用python的一大堆文件,并且全部放在程序根目录下,没有放在一个文件夹里。 试试能不能用
<火山程序 类型 = "通常" 版本 = 1 />
方法 加密_RSA_OAEP_SHA256公钥 <公开 静态 类型 = 字节集类 注释 = "使用公钥对指定数据进行RSA_OAEP_SHA256加密后返回" 返回值注释 = "返回加密后的数据" @禁止流程检查 = 真>
参数 数据 <类型 = 字节集类 注释 = "提供所欲加密的数据." 注释 = "注意输入的数据长度,不能超过(密钥位/8-填充尺寸),例如生成密钥为2048位,无填充的情况下可加密256字节的数据."
编辑时信息 = "9554C, 0, 0, 0">
参数 指定公钥 <类型 = 字节集类 注释 = "提供本次加密所欲使用的公钥数据">
参数 PKCS8格式 <类型 = 逻辑型 注释 = "指定所提供公钥数据的格式" @默认值 = 假>
{
@ @an<CVolMem> outData;
@ int inLen = (int)@<数据>.GetSize();
@ if ((int)@<指定公钥>.GetSize() == 0 || inLen == 0)
@ return outData;
@ RSA * tmpRsa = @dt<加解密类>::VolRSA_GenerateRsa(FALSE, @<指定公钥>, @<PKCS8格式>);
@ if (!tmpRsa)
@ return outData;
@ int rsa_size = RSA_size(tmpRsa);
@ unsigned char * pOut = (unsigned char *)outData.Alloc(rsa_size, TRUE);
@ if (RSA_padding_add_PKCS1_OAEP_mgf1(pOut, rsa_size, (unsigned char *)@<数据>.GetPtr(), inLen, NULL, 0, EVP_sha256(), EVP_sha256()) <= 0)
@ {
@ outData.Free();
@ return outData;
@ }
@ int outLen = RSA_public_encrypt(rsa_size, pOut, pOut, tmpRsa, RSA_NO_PADDING);
@ RSA_free(tmpRsa);
@ if (outLen > 0)
@ outData.Realloc(outLen);
@ else
@ outData.Free();
@ return outData;
}
摘星揽月 发表于 2026-5-21 18:47
目前,火山会调用python的一大堆文件,并且全部放在程序根目录下,没有放在一个文件夹里。 ...
这个没有太好的办法,因为是静态链接,除非你自己做个启动器程序.
页:
[1]
2