gpt4 book ai didi

c - 如何管理 Linux 加密 api 使用的分散列表?

转载 作者:行者123 更新时间:2023-12-02 05:14:25 28 4
gpt4 key购买 nike

我需要一次(解密)一些数据。额外的填充字节可能必须添加到目标数据字节的开头和结尾。内置的加密 API 适用于 struct scatterlist 对象,正如您在分组密码的加密方法定义中所见:

int (*encrypt)(struct blkcipher_desc *desc, struct scatterlist *dst,
struct scatterlist *src, unsigned int nbytes);

现在我要遵循的加密操作过程:

  1. 获取一个数据缓冲区buf(长度L)
  2. 计算左填充和右填充字节(rpadlpad)
  3. 加密整个东西(lpadbufrpad)
  4. 去除结果中的填充字节

最简单和低效的解决方案是分配 L + rpad + lpad 字节并适本地复制这个新区域中的缓冲区内容.但是由于 API 使用那些 scatterlist 对象,我想知道是否有办法避免这种纯粹的资源浪费。

我在 LWN 上阅读了几篇关于 scatterlist 链接的文章,但快速浏览一下头文件让我担心:看起来我必须手动设置整个事情,这是一个非常糟糕的做法......

关于如何正确使用 scatterlist API 的任何线索?理想情况下,我想执行以下操作:

  1. 为输入和输出的填充字节分配缓冲区
  2. 分配一个只存储“有用的”加密字节的“有效负载”缓冲区
  3. 创建包含填充缓冲区和目标缓冲区的散点列表对象
  4. 对整体进行加密并将结果存储在输出填充缓冲区 + 输出“有效载荷”缓冲区中
  5. 丢弃输入和输出填充缓冲区
  6. 将加密的“有效负载”缓冲区返回给用户

最佳答案

首先,抱歉我的英语不好,我不是以英语为母语的人。我想你正在寻找内核“blkcipher_walk_virt”中的这个 api,你可以在 ecb.c 中找到它的用法“crypto_ecb_crypt”。你还可以看到 padlock_aes.c

关于c - 如何管理 Linux 加密 api 使用的分散列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891934/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com