递归火山软件开发平台
标题:
这段RSA分段加密代码要如何转换到火山
[打印本页]
作者:
无人岛
时间:
2024-10-17 13:13
标题:
这段RSA分段加密代码要如何转换到火山
std::string EncryptWithPublicKey(const std::string& pubKeyStr, std::string& message) {
std::string encrypted;
size_t maxBlockSize = RSA_size(rsa) - 11; // Maximum block size for RSA encryption
for (size_t i = 0; i < message.size(); i += maxBlockSize) {
size_t end = (std::min)(i + maxBlockSize, message.size());
std::string block = message.substr(i, end - i);
std::vector<unsigned char> encryptedBlock(RSA_size(rsa));
int result = RSA_public_encrypt(block.size(), (unsigned char*)block.c_str(), encryptedBlock.data(), rsa, RSA_PKCS1_PADDING);
encrypted += base64_encode(std::string((char*)encryptedBlock.data(), result)) + "|";
}
RSA_free(rsa);
if (!encrypted.empty()) {
encrypted.pop_back(); // Remove the last '|'
}
return encrypted;
}
复制代码
这段RSA分段加密代码要如何转换到火山
作者:
suyan
时间:
2024-10-17 13:36
OPENSSL里有现成的RSA加解密
作者:
无人岛
时间:
2024-10-17 13:38
suyan 发表于 2024-10-17 13:36
OPENSSL里有现成的RSA加解密
我想用模块里那个BCrypt不带DLL的
作者:
Xelloss0618
时间:
2024-10-17 13:58
<火山程序 类型 = "通常" 版本 = 1 />
方法 RSA分段加密 <公开 静态 类型 = 文本型>
参数 数据 <类型 = 字节集类>
参数 公钥 <类型 = 字节集类>
参数 密钥位 <类型 = 整数 @默认值 = 1024>
{
变量 encrypted <类型 = 文本型>
变量 i <类型 = 整数 值 = 0>
变量 maxBlockSize <类型 = 整数>
变量 end <类型 = 整数>
maxBlockSize = 密钥位 / 8 - 11
判断循环 (i < 数据.取字节集长度 ())
{
变量 block <类型 = 字节集类>
end = 取较小值 (i + maxBlockSize, 数据.取字节集长度 ())
block = 数据.取字节集中间 (i, end - i)
加入文本 (encrypted, 加解密.加密_RSA_公钥 (block, 公钥).字节集到BASE64文本 (BASE64编码方式.标准, -1))
加入字符 (encrypted, '|')
i = i + maxBlockSize
}
如果 (是否以字符结束 (encrypted, '|'))
{
删除字符 (encrypted, 取文本长度 (encrypted) - 1, 1)
}
返回 (encrypted)
}
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4