- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 mingw 4.8.1 (sjlj) 构建 cryptopp 5.6.1。我已经从 Crypto++ & MinGW 更改了 GNUMakefile
但是有几个问题:
当我尝试构建共享库时出现以下错误:
make dll
make: *** No rule to make target 'cryptopp.dll', needed by 'cryptest.import.exe'. Stop.
make libcryptopp.dll
// ...
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c hex.cpp -o hex.export.o
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c hmac.cpp -o hmac.export.o
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c integer.cpp -o integer.export.o
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c iterhash.cpp -o iterhash.export.o
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c misc.cpp -o misc.export.o
g++ -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3 -DCRYPTOPP_EXPORTS -c modes.cpp -o modes.export.o
make: *** No rule to make target 'modexppc.export.o', needed by 'libcryptopp.dll'. Stop.
有人用 mingw 4.8.1 编译过成功的 crypto++ 吗?这是我的 makefile 的片段:
CXXFLAGS = -std=c++11 -DNDEBUG -O3 -m32 -msse2 -msse3 -mssse3
ARFLAGS = rc
LDLIBS += -lws2_32
LDFLAGS =
MKDIR = mkdir
CP = copy
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
# test.o needs to be after bench.o for cygwin 1.1.4 (possible ld bug?)
TESTOBJS = bench.o bench2.o test.o validat1.o validat2.o validat3.o adhoc.o datatest.o regtest.o fipsalgt.o dlltest.o
LIBOBJS = $(filter-out $(TESTOBJS),$(OBJS))
DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp cryptlib.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp
DLLOBJS = $(DLLSRCS:.cpp=.export.o)
LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
DLLTESTOBJS = dlltest.dllonly.o
lib: libcryptopp.a
all: cryptest.exe
test: cryptest.exe
cryptest.exe v
install: lib
$(CP) *.h include\cryptopp
$(CP) *.a lib
clean:
del cryptest.exe libcryptopp.a $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
libcryptopp.a: $(LIBOBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
libcryptopp.so: $(LIBOBJS)
$(CXX) -shared -o $@ $(LIBOBJS)
cryptest.exe: libcryptopp.a $(TESTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS)
nolib: $(OBJS) # makes it faster to test changes
$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
dll: cryptest.import.exe dlltest.exe
libcryptopp.dll: $(DLLOBJS)
$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
libcryptopp.import.a: $(LIBIMPORTOBJS)
$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
$(RANLIB) $@
cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcryptopp.dll -lcryptopp.import $(LDFLAGS) $(LDLIBS)
dlltest.exe: cryptopp.dll $(DLLTESTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll $(LDFLAGS) $(LDLIBS)
%.dllonly.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c $< -o $@
%.import.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_IMPORTS -c $< -o $@
%.export.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_EXPORTS -c $< -o $@
%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $<
编辑
为了让它工作,我强制在 misc.h(cryptopp)中定义的函数 memmove_s 被定义为内联,现在也可以在 Windows xp 上工作(其中 memmove_s 没有在 msvcrt.dll 中定义)。
问题:能否将windows xp的mscvrt.dll改成windows 7定义的mscvrt.dll?
最佳答案
构建它的一种方法是使用 qmake:
TEMPLATE
更改为 lib
并将 ws2_32 添加到 libpro 文件现在看起来像这样
TEMPLATE = lib
INCLUDEPATH += .
CONFIG -= qt
HEADERS += ...
SOURCES += ...
win32-g++ {
QMAKE_CXXFLAGS += -msse -msse2 -msse3 -mssse3
LIBS += -lws2_32
}
似乎可行。
关于c++ - 如何使用 mingw 编译 cryptopp 5.6.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085474/
我正在尝试使用 cryptopp,以下代码会导致 stringsource 函数发生访问冲突。这可能是什么原因?我以前成功运行过类似的代码,几乎没有什么区别。 AesHelper.cpp #inclu
我试图在 Arch Linux (3.12.9) 上通过 cabal 安装 happstack-server-tls 包,但出现了这个错误: Resolving dependencies... Con
我在 IOS 中成功编译并执行了 Cryptopp,但我真的很难在 Android 中使用它。 在这里,我使用的是 Cryptopp 5.6.3、NDK r10e 和 android studio 1
我有一个在 CBC 模式下使用 AES 算法的加密文件。我有数据库中的 key 。我正在尝试使用 cryptopp 5.6.2 库编译以下代码。它在没有 -Wall 标志的情况下编译,但是当我在下面启
这是 log1 应用程序输出: : ... 25 more W/System.err( 1500): java.lang.ClassNotFoundException: android.g
我正在玩 cryptopp,但在 Base64 编码/解码方面遇到了问题。 在下面的代码中,假设 sig 的值应该等于 tsig,但是它们在最后一个字符上是不同的(sig 比 >tsig 一个符号)。
我是第一次玩 Cryptopp,我找到了一个编码为十六进制的示例……一切都很好。现在我想将生成的 std::string 解码为原始字符串,但我得到的只是空字符串。 #include "stdafx.
我正在尝试运行一个使用 AES 加密和解密的程序。 (来自 http://www.codeproject.com/KB/security/AESProductKey.aspx) // From aes
我正在尝试用 C++ 中的 RSA 加密一些文本, 加密时我正在生成 n, e, d但是在尝试解密时,私钥初始值设定项说 key 无效... 所以我构建了一个生成 key 的代码,然后尝试在此之后立即
我正在尝试加密已解析为字符串的字节数组。这似乎适用于所有情况,但字节数组包含 0x00 的情况除外。 int main() { byte cipherTextWithZeroByte[32]
谁能分享一个有效的 RabinMillerTest() 示例?遗憾的是,我的 googlefu 不见了。 这是我的测试代码: #include "integer.h" #include "nbtheo
Crypto++ 库通过针对 cryptlib.lib 和 cryptopp.lib 进行编译来支持后期绑定(bind)。这需要使用 cryptopp.dll。当尝试通过 /DELAYLOAD:cry
我有要解密的流。我将它分成 block 并将每个 block 传递给下面的方法。我需要解密的数据是按 16 字节的 block 加密的,如果最后一个 block 小于 16,那么其余所有字节都用填充填
我在 Windows 中编译 cryptopp 项目时遇到以下错误。 C:\Users\Sajith\AppData\Local\Temp\ccxq8O8x.o:aescbc.cpp:(.text$_
我发现在 RHEL7 和 Debian9 上使用 cryptopp 生成 SHA3 哈希的行为存在非常奇怪的差异。如果我改用 SHA1 或 MD5 哈希,则两个平台上的输出是相同的。我已将其缩减为以下
如何将 cryptopp::integer 转换为 QString? 如果这很重要,我会在 Mac OS 上工作。我完全不知道该怎么做,只是尝试使用 QCA,但它还不够好! 最佳答案 How to c
我正在尝试使用 Crypto++ 在编译时散列一些字符串(不需要检索它们)库和一个 constexpr 函数。这是我到目前为止的代码: constexpr const char* operator "
我的程序可以加密文本并将其保存在文件中,并在从文件中获取密文后解密。 但我一直收到这个错误 terminate called after throwing an instance of 'Crypto
这个问题在这里已经有了答案: How to convert CryptoPP::Integer to char* (4 个答案) 关闭 6 年前。 我找不到将 CryptoPP::Integer(从
我对 Crypto++ 库没有任何经验。在我的项目中,我需要将 Integer 类型转换为 int。这就是我正在尝试的: int low_bound1=8; int low_bound2=9; Int
我是一名优秀的程序员,十分优秀!