递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 363|回复: 3
打印 上一主题 下一主题

[视窗] 这段RSA分段加密代码要如何转换到火山

[复制链接]

3

主题

17

帖子

81

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
81
跳转到指定楼层
楼主
发表于 2024-10-17 13:13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. std::string EncryptWithPublicKey(const std::string& pubKeyStr, std::string& message) {
  2.     std::string encrypted;
  3.     size_t maxBlockSize = RSA_size(rsa) - 11; // Maximum block size for RSA encryption

  4.     for (size_t i = 0; i < message.size(); i += maxBlockSize) {
  5.         size_t end = (std::min)(i + maxBlockSize, message.size());
  6.         std::string block = message.substr(i, end - i);

  7.         std::vector<unsigned char> encryptedBlock(RSA_size(rsa));
  8.         int result = RSA_public_encrypt(block.size(), (unsigned char*)block.c_str(), encryptedBlock.data(), rsa, RSA_PKCS1_PADDING);

  9.         encrypted += base64_encode(std::string((char*)encryptedBlock.data(), result)) + "|";
  10.     }

  11.     RSA_free(rsa);
  12.     if (!encrypted.empty()) {
  13.         encrypted.pop_back(); // Remove the last '|'
  14.     }
  15.     return encrypted;
  16. }
复制代码
这段RSA分段加密代码要如何转换到火山
回复

使用道具 举报

47

主题

530

帖子

2931

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2931
沙发
发表于 2024-10-17 13:36:29 | 只看该作者
OPENSSL里有现成的RSA加解密
回复

使用道具 举报

3

主题

17

帖子

81

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
81
板凳
 楼主| 发表于 2024-10-17 13:38:00 | 只看该作者
suyan 发表于 2024-10-17 13:36
OPENSSL里有现成的RSA加解密

我想用模块里那个BCrypt不带DLL的
回复

使用道具 举报

26

主题

1899

帖子

6920

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6920
地板
发表于 2024-10-17 13:58:19 | 只看该作者
<火山程序 类型 = "通常" 版本 = 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)
}
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-22 23:52 , Processed in 0.085257 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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