Blowfish 加密在加密和解密过程中弄乱了前 8 个字节

2024-07-01

我刚刚尝试使用 openssl c 库 Blowfish 算法进行一些加密/解密,并遇到了一个奇怪的错误:解密消息的前 64 位不知何故搞砸了。

我究竟做错了什么?

这是代码:

#include <openssl/blowfish.h>
#include <cstring>
#include <cstdio>

int main()
{
    unsigned char rawKey[] = "password";

    BF_KEY key;
    BF_set_key(&key, strlen((char*) rawKey), rawKey);

    unsigned char msg[] = "Lorem ipsum dolor sit amet";

    unsigned char enc[64];
    memset(enc, 0, 64);
    unsigned char ivec[8];
    memset(ivec, 0, 8);

    BF_cbc_encrypt(msg, enc, strlen((char*) msg) + 1, &key, ivec,
        BF_ENCRYPT);

    unsigned char dec[64];

    BF_cbc_encrypt(enc, dec, strlen((char*) msg) + 1, &key, ivec,
        BF_DECRYPT);

    printf("%s\n", dec);

    return 0;
}

输出是:

.,�s�Ksum dolor sit amet

0x7fffffffde20: 46 '.'  3 '\003'    23 '\027'   44 ','  -102 '\232' 115 's' -2 '\376'   75 'K'
0x7fffffffde28: 115 's' 117 'u' 109 'm' 32 ' '  100 'd' 111 'o' 108 'l' 111 'o'
0x7fffffffde30: 114 'r' 32 ' '  115 's' 105 'i' 116 't' 32 ' '  97 'a'  109 'm'
0x7fffffffde38: 101 'e' 116 't' 0 '\000'

先谢谢了 !


在 BF_cbc_encrypt 之前尝试 memset(ivec, 0, 8)。 BF_cbc_encrypt 也许会改变它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blowfish 加密在加密和解密过程中弄乱了前 8 个字节 的相关文章

  • 如何使用OpenCV的归一化相关性?

    如何使用 OpenCV 的归一化相关性 有人可以提供代码示例吗 我的问题 我有一个螺丝头图像 需要找到螺丝的中心 所以我正在考虑使用 OpenCV 相关性 这是一个好主意吗 您可以在下面的链接下找到示例图像 http imageshack
  • 如何管理 JSONP 响应中的 ' ?

    我需要像这样管理 char 在我的 JSONP 请求中 通过 jquery 使用 Ajax 所以 来自 C 这就是我所做的 myText Hello I m a string myText Replace Response Write Re
  • 分段错误(核心转储)

    当我尝试运行此程序时 出现分段错误 核心转储 它编译完美 但我收到错误 我不知道为什么 我已尝试以所有可能的方式编辑我的代码 但仍然收到此错误 我已经没有主意了 任何帮助都会很棒 谢谢 unsigned short reg NULL int
  • IDeserializationCallback 与 OnDeserializedAttribute

    据我了解 当对象在反序列化后需要执行某些任务时 可以使用 IDeserializationCallback 接口和 OnDeserialized 事件 IDeserializationCallback Serializable public
  • 复制空对象是否涉及访问它

    灵感来自this https stackoverflow com a 48273386 4832499问题 struct E E e E f e Accesses e To access https timsong cpp github i
  • 为什么 C# 三元运算符不能与委托一起使用?

    当分支选择函数时 使用三元运算符来选择函数可能是有意义的 但这是不可能的 为什么 public class Demo protected bool branch protected void demo1 protected void dem
  • C++14 中专门用于数组类型的分配器?

    为什么 c 14 中没有 std allocator 的数组模板专门化 当我自己尝试专门化 std allocator 时 我在实现 Construction 和 destroy 方法时遇到了死胡同 是这个原因吗 那么为什么 std all
  • 安装 Windows 服务以使用 ServiceAccount.User 在用户凭据下运行,但不提示

    我创建了一个 C Windows 服务及其随附的用于创建安装程序的 Visual Studio 安装项目 它成功安装了该服务 当我从枚举中选择任何值时ServiceAccount除了ServiceAccount User 该服务安装时不会提
  • 启动离线 ClickOnce 应用程序并等待退出

    我已经部署了 ClickOnce Windows 窗体应用程序 应用程序 A 另一个应用程序 应用程序 B 以文件名作为参数启动应用程序 A 我用这段代码做到这一点 var basePath Environment GetFolderPat
  • 单元测试依赖注入

    我在用Autofac for IoC 这是我的容器启动器类 其职责是注册依赖项 public class ContainerInit public static IContainer BuildContainer var conFac ne
  • 如何在类型依赖于派生类的基模板类中声明成员?

    给定一个使用 CRTP 的基类 我正在考虑在基模板类中声明一个成员 其中类型依赖于派生类 虽然以下内容按预期工作 template
  • 使用本机 Win32 读取“C”中的文本文件(Unicode)

    我有一个使用 CreateFile 和 WriteFile 创建的面向行的文本文件 Unicode 使用 ReadFile 以二进制流形式读取该文件非常简单 但需要额外的低级处理才能将其分成几行 是否有 Win32 函数可以为我执行此操作
  • “auto_ptr”和 STL 容器:编写错误用法的示例

    读完本教程后提出这个问题 http www cprogramming com tutorial auto ptr html http www cprogramming com tutorial auto ptr html 在那里你可以找到以
  • C 中的隐式类型转换

    我在维基百科上偶然发现了以下示例 http en wikipedia org wiki Type conversion Implicit type conversion http en wikipedia org wiki Type con
  • fread 在 C 中如何工作?

    我有内容为的文本文件 12345678901222344567 然后我用这段代码来读取内容 FILE pFile int c char buffer 256 pFile fopen myfile txt r int a 50 0 fread
  • 如何将 ContextMenuStrip 添加到 ToolStripMenuItem

    我希望当我单击菜单项时 显示一个包含 删除 重命名 等项目的上下文菜单 当右键单击菜单项时 如何将自身绑定为上下文菜单 我脑海中跳出的第一个想法是连接一些MouseDown事件于ToolStripMenuItem并显示第二个ContextM
  • 如何使用 gcc 的 -I 命令添加递归文件夹

    有没有办法使用 gcc 的 I 命令并通过给出 a 将所有路径添加到搜索路径root目录 我正在尝试使用 gcc E myfile c查看宏展开式 但是myfile c包含不同目录中的一大堆其他头文件 并且因为我在 vim 中执行此命令 所
  • 跨 Web 服务列表<国家/地区> 变为国家/地区 []

    我有一个 Web 服务 调用时会返回一个包含多态列表的 Result 对象 但是 当我在客户端应用程序中添加引用时 公共字段将成为客户端应用程序中的国家 地区数组 如何将客户端应用程序中的字段更改为列表 public Result GetC
  • 从构造函数调用虚函数[重复]

    这个问题在这里已经有答案了 我正在阅读有效的C https en wikipedia org wiki Scott Meyers 还有 第 9 条 在构造或销毁期间切勿调用虚函数 我想知道我的代码是否正确 即使它违反了这条规则 using
  • “System.Int64”类型的表达式不能用于返回类型“System.Object”

    我正在尝试创建以下形式的表达式 e gt e CreationDate CreationDate属于类型long 但是我希望表达式返回一个object反而 我想用object作为返回类型 因为表达式是在运行时根据查询参数动态构建的 查询参数

随机推荐

  • 在 Excel 中使用宏在循环中查找和替换

    我有两张纸 表 1 包含以下数据 Sheet 1 Column 1 column 2 Hotel A New York Hotel B Melbourne 我希望用这个值替换表 2 中的值 表2是这样的 Column 1 Column 2
  • Android VpnService - 如何转发拦截的互联网流量?

    我已经关注了这个link https stackoverflow com questions 17766405 android vpnservice to capture packets wont capture packets并使用 Vp
  • 无法从 START_ARRAY 令牌中反序列化对象实例

    我有两个对象 第一个是仪表板 第二个是房间我有一个 json 如下所示 hotel id 1 hotel room 200 hotel properties id 1 room type Single rack rate 2000 publ
  • SQL 查询和 VBA 错误

    我不断收到此错误 BOF or EOF set tu True or the current record has been deleted The requested operation requires a current record
  • 没有要聚合的数字类型 - groupby() 行为发生变化吗?

    我对一些团体代码有问题 我很确定这些代码曾经运行过 在较旧的 pandas 版本上 在 0 9 上 我得到没有要聚合的数字类型错误 有任何想法吗 In 31 data Out 31
  • 在连续 8 个测量到的 GC 抖动周期后关闭 JVM

    我正在编写 Apache beam BAtch 数据流 其中从 GCS 写入到 BQ 我的数据包含400万条记录 我已指定n1 HighMem 8机器类型 我的数据流以少量数据形式工作 我的用例我的模式不固定 所以我使用了 getFaile
  • 在 Node js + Express + Passport + MongoDB 中更新用户记录

    好吧 我已经为此苦苦挣扎了几个小时 但不知道如何让它发挥作用 我按照本教程完成了使用 mongodb express 和 Passport 设置 NodeJS https scotch io tutorials easy node auth
  • TASM 1.4 - 在不清除屏幕的情况下更改背景颜色?

    我正在使用 Tasm 1 4 我试图更改背景和文本的颜色而不清除以前的文本 但尽管颜色发生了变化 但它总是最终会清除以前的文本 例如 mov ah 09h lea dx text1 int 21h displays text1 mov ah
  • Docker:非root用户使用卷时没有写入权限

    我有以下 Dockerfile RUN groupadd r myuser useradd r g myuser myuser RUN mkdir data chmod a rwx data USER myuser 运行图像docker r
  • 在 PostgreSQL 9.6 for windows 32 位上设置托管

    很多天以来 我一直在尝试在我的 postgreSQL 上设置托管 我尝试了很多解决方案 但没有一个有效 我的postgres的版本是9 6 适用于 Windows 32 位与 pgAdmin 4 我已经在我的pg hba conf有多种类型
  • 我应该有一个专门的主键字段吗?

    我正在设计一个供 Web 应用程序使用的小型 SQL 数据库 假设某个特定表有一个 名称 字段 该字段不允许两行具有相同的值 但是 用户可以随时更改名称字段 该表中的主键将用作其他表中的外键 因此 如果 名称 字段用作主键 则任何更改都需要
  • 正则表达式捕获冒号分隔的键值对,具有多行值

    我目前正在 Ruby on Rails 在 Eclipse 中 中开发一个项目 我的任务是使用正则表达式将数据块拆分为相关部分 我决定根据 3 个参数来分解数据 该行必须以大写字母开头 正则表达式等效 A Z 它必须以 正则表达式等效项 我
  • 如何保存带有自定义扩展名 (.sas) 的 TextEdit (mac) 文件?

    因此 我正在为 SAS 编写一些代码 我意识到我必须将文件另存为 filename sas 我的教授提到我必须在计算机上使用记事本或其他文本编辑器 如何在 Mac 上使用 TextEdit 保存 sas 文件 打开 TextEdit 添加一
  • mkoctfile 分段错误

    我正在尝试编译一个example https www gnu org software octave doc interpreter Getting Started with Mex 002dFiles html我在 Octave 中查看
  • 删除第一个注释-MapView iOS

    我正在从事地图视图项目 我有关于从地图视图中删除注释的问题 我已经实现了以下代码 但它随机删除注释 而不是第一个 mapView removeAnnotation self mapView annotations objectAtIndex
  • iOS 以编程方式添加 CardDAV 帐户

    是否可以添加CardDav以编程方式帐户 因为它可以通过手动使用来完成邮件 通讯录 日历 gt 添加帐户选项中Settings app 一般来说 是否可以在代码中添加任何其他类型的帐户 比如兑换账户 我在论坛上的某个地方读到 事实并非如此
  • 使用 Linq 对 XML 进行复杂排序

    我尝试为我的问题找到解决方案 但我在该领域 Linq XML 的知识相当有限 已经找到一个模拟施工 https stackoverflow com questions 6922180 sort xmldocument using linq
  • 如何将滚动条向上移动一行? (在 C# RichTextBox 中)

    对于我的 C RichTextBox 我想以编程方式执行与单击垂直滚动条顶部的向上箭头相同的操作 这会将 RichTextBox 显示向上移动一行 这个的代码是什么 谢谢 这就是我所做的 using System Runtime Inter
  • 将一个元素放在集合的尾部

    我发现自己做了很多事情 concat coll e 其中 coll 是集合 e 是单个元素 Clojure 中有执行此操作的函数吗 我知道 conj 最适合向量 但我不知道将使用哪个 coll 例如 它可以是向量 列表或排序集 某些类型的集
  • Blowfish 加密在加密和解密过程中弄乱了前 8 个字节

    我刚刚尝试使用 openssl c 库 Blowfish 算法进行一些加密 解密 并遇到了一个奇怪的错误 解密消息的前 64 位不知何故搞砸了 我究竟做错了什么 这是代码 include