问题标签 [botan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
783 浏览

c++ - 如何调试 Cygwin 故障?

我正在从 Centos 移植到 Cygwin,发现我的应用程序在 Botan::InitializationVector 的构造函数期间退出时没有错误消息并且在执行过程中退出状态为零。

如果我尝试在等待自旋变量的 main() 中主动附加 gdb,则不会得到正常的堆栈跟踪:

因此,没有 gdb,很难弄清楚出了什么问题。

为什么我在 Cygwin 上没有收到错误消息,但应用程序会在执行过程中退出?

我推断它在构造函数内部,因为 clog 只显示构造函数之前的行而不是构造函数之后的行:

Botan 是开源的:http : //botan.randombit.net/ 以下是来自 src/sym_algo/symkey.{h,cpp} 的一些代码片段:


我将失败的代码移到 main() 中,它工作正常。我还在代码周围放了一个 try catch ... 并且没有抛出异常。main() 和应用程序稍后的故障点之间出现了问题。我可以分而治之来缩小它不再起作用的确切点。一位 Botan 开发人员给了我这个精简的代码,但它也失败了:


现在我的调试器工作了,我看到了 segv:

这是 auto_rng.h 代码:

0 投票
1 回答
5552 浏览

android - 使用 JNI 访问我的共享库时出现“未定义的引用”

我正在尝试使用 JNI 构建一个版本的Botan(用于加密算法的库)以在 Android 上运行一些本机 C++ 程序。
我已经使用 NDK 工具链(NDK R5b)成功地创建了一个 libbotan.so,没有任何错误。但是当我从我的 Android 项目(示例)编译我的源文件(exampleError.cpp)时,我收到以下错误:

这是我的 exampletError.cpp:

这里是对应的Java类createError.java: private native void simpleTestCall();

在这里你可以看到 Android.mk:

最后,但并非最不重要的 Application.mk:

注:JNI文件夹结构如下:Android.mk Application.mk botan/botan_all.h sources/botan_all.cpp exampleError.cpp

我还检查了 libbotan.so 的内容,如下所示:

但我不知道在这个输出中是否可以看到任何错误。此外,我还在网上搜索了这个错误,例如here。不幸的是,我还不能解决我的问题。

所以我的问题是:我做错了什么?

0 投票
1 回答
737 浏览

c++ - 如何使用 Botan Amalgamation 文件和 VS2008

  • 全新安装 Windows XP SP3
  • 安装 Python 2.7.2
  • 将Botan 1.10.1解压到桌面
  • 运行configure.py --cc=msvc --disable-shared --gen-amalgamation
  • botan_all.hbotan_all.cpp复制到我的开发工作站
  • VS2008新建项目Win32控制台项目

这给了我 102 个错误……有人在使用这个库吗?

0 投票
1 回答
1176 浏览

qt - Qt 不适用于 Botan_v1.10.1 库

我一直在尝试让 Qt 4.7.3 与最新的 Botan v1.10.1 库一起使用。

有一个适用于 Windows 的 Botan 二进制文件,但似乎 *.dll 文件仅适用于 MS Visual Studio。所以我尝试用 mingw32 编译 Botan,这样我就可以获得与 Qt 兼容的 *.dll 和 *.a 文件。

一些额外信息:
-Windows 7 64 位。
- 尝试在 32 位模式下编译。
-Qt 是最新的,运行良好,安装在 32 位模式下。
-Botan 是 x86 Windows 的 v1.10.1。

我打开 Qt 命令提示符并发出以下命令。

该命令生成了一个 Makefile。

然后我使用了这个命令。

此命令在运行几分钟后会生成以下错误。

C:\Botan-1.10.1\src\utils\time.cpp:在函数'tm Botan::::do_gmtime(time_t)'中:C:\Botan-1.10.1\src\utils\time.cpp:55 : 错误: 'gmtime_s' 未在此范围内声明 mingw32-make: * [build\lib\time.obj] 错误 1

我打开 C:\Botan-1.10.1\src\utils\time.cpp 并改变了这个

对此

然后我再次运行 mingw32-make。这次它编译了更多并陷入了这个错误。

C:\Botan-1.10.1>mingw32-make process_begin: CreateProcess(NULL, rm -f libbotan-1.10.a, ...) 失败。make (e=2): 系统找不到指定的文件。mingw32-make: * [libbotan-1.10.a] 错误 2

我无法超越这个错误。任何帮助将不胜感激。

0 投票
1 回答
1299 浏览

mingw - 在 Windows7 64 位中使用 MinGW 编译 Botan 的问题

我正在尝试将 Botan 的非 MSVC 版本安装到我的环境中。我下载了压缩包,解压文件,然后运行 ​​configure.py

运行 configure.py 后,我运行 make,make 失败并出现“抱歉,未实现:64 位模式未编译”错误。

这个错误是由什么引起的,我该如何解决?

configure.py 的输出:

来自make的输出:

0 投票
1 回答
1945 浏览

c++ - 如何使 Botan RSA 签名验证匹配 PyCrypto

我正在开发一个生成要下载到客户端计算机的 RSA 签名的密钥生成器。

在客户端计算机中,我想使用 RSA 签名和公钥来验证字符串。如果您能提供帮助,我想知道的是我应该使用什么算法来验证签名或我的代码有什么问题。

[编辑用建议更新了代码,但仍然没有成功。]

Python代码:

和 C++ 代码:

0 投票
1 回答
1191 浏览

c++ - Botan c++ 哈希函数 generate_bcrypt()

我正在尝试使用 Botan 的函数 generate_bcrypt() 获取密码哈希。
我在这里阅读手册 http://botan.randombit.net/passhash.html 。之后我还读过一次。源代码:


我成功编译了它,但是当我运行它时,我得到:

我不知道为什么会得到它(当然,我知道堆栈有问题)。但我什至不敢为此谴责博坦。所以我希望我在某个地方做错了什么。当然,我可以离开这个图书馆并尝试不同的东西。但是我已经将自己绑定到这个库(我使用了解密()和 ecnrypt()-富有),所以我不想创建一次依赖。如果有人在我的错误隐藏的地方给我提示,我会非常高兴甚至高兴。

哎呀,很难看到我的截图。我重新上传了它们:

http://s14.radikal.ru/i187/1203/d1/b1b1a52d051d.png

http://s51.radikal.ru/i131/1203/5f/893fe9f6bbc5.png

只能猜测Botan有什么问题....但令人难以置信

0 投票
1 回答
301 浏览

c++ - 将 Botan 加密结果输出到 QDomDocument,反之亦然

我正在使用 Botan 库在 Qt 中进行加密。我让它工作到可以从一个文件加密和解密到另一个文件的位置,但我正在尝试将其更改为从文件加密到 QDomDocument(加密文件将只是一个 XML 文件),然后从 QDomDocument 解密到一个文件。

到目前为止,这就是我实际加密的内容(filePlainText/fileEnc 只是 txt 文件路径)。

DataSink_Stream 接受 ofsteam 或 ostream。所以我想在从文件解密到变量时我需要使用 ostream。但是如何将 ostream 的内容存储到可以输入 QDomDocument 的内容中?

然后为了加密回文件,使用 istream 到 ofstream 中,但是我怎样才能将 QDomDocument 内容输入到 istream 中?

0 投票
1 回答
396 浏览

c++ - 编译 Botan 1.10.1:未定义的命名空间

刚从 Botan 1.4 切换到 Botan 1.10。配置、制作和安装在我的 Mac (OSX10.6) 上运行良好。但是尝试使用lib

导致构建错误:

是否需要使用特殊的字符串实现?所有库都可用并且路径似乎没问题(/usr/local/include)。

0 投票
2 回答
1293 浏览

python - Python Base64 字符串比 Botan Base64 字符串短

我设法让 AES/Rijndael [256 位密钥/128 位块大小] 对称加密工作:用 pycrypto 加密并用 C++ 中的 Botan 解密。

但是,当我尝试在 python 中对加密结果进行 base64 编码时,生成的字符串比 Botan 使用 Base64_Encoder 生成的相同字符串短。例子:

Botan Base64:

zjjxmJf5KPs183I/EvC+JuNbOdmbm4bWyhLsdZI8fuVUnKQAeSj0ivmKIYu7HBjM7gLgLV+xtSKcsCeQD7Gy4w==

Py-3k Base64:

zjjxmJf5KPs183I/EvC+JuNbOdmbm4bWyhLsdZI8fuVUnKQAeSj0ivmKIYu7HBjM

您可以看到字符串在 64 个字符标记之前完全相同。如果我尝试在 Botan 中解密 Python base64 字符串,它会抱怨“输入不足”。

如何让 Botan 接受 Python base64 字符串?

-- 编辑 -- 在 Python 中解码 Botan base64 编码字符串时:

因此,Python pycrypto 结果:

Python似乎“省略”了一些东西。但是什么?

-- 编辑 2 --

当我尝试对 pycrypto 结果进行 base64decode 和解密时,Botan 抛出这个:

所以 pycrypto 没有产生“足够”的输出,以至于它可以被 Botan 解密。

-- 编辑 3 --- 代码示例:

Python:更改了敏感信息。

C++ (Qt + Botan)

-- 编辑 4 --

我决定尝试在 python 中解密 Botan 加密的、base64 编码的字符串,它可以工作,但它添加了一堆看起来像填充的东西:

然后我继续在base64编码之前将该填充添加到我的pycrypto结果中以生成以下内容,Botan拒绝解密;(

-- ANSWER -- (系统不允许我再过 5 个小时自行回答!)

我终于浏览了所有文档并找到了答案!需要指定要用于该模式的填充方法。我指定了 NoPadding 例如

和中提琴!输出与 pycrypto 完全匹配。供参考:[http://botan.randombit.net/filters.html][1]

[1]:Botan Docs:密码过滤器