C++ AES加密密码

C++ AES加密密码,c++,C++,我需要一个小的,像两段式的加密版本。我搜索并找到了(源代码),但代码似乎是为Windows编写的,我需要一个多平台的 是否有其他已知的AES Encrpyton小版本或Linux上未知的已用函数的修复程序 我的编译器说这些是未知函数: ./aes/AES.cpp:198:17: error: ‘_rotl’ was not declared in this scope ./aes/AES.cpp:608:20: error: ‘_rotr’ was not declared in this sc

我需要一个小的,像两段式的加密版本。我搜索并找到了(源代码),但代码似乎是为Windows编写的,我需要一个多平台的

是否有其他已知的AES Encrpyton小版本或Linux上未知的已用函数的修复程序

我的编译器说这些是未知函数:

./aes/AES.cpp:198:17: error: ‘_rotl’ was not declared in this scope
./aes/AES.cpp:608:20: error: ‘_rotr’ was not declared in this scope
我还得到:

./aes/AES.cpp:764:34: error: ‘memset’ was not declared in this scope
./aes/AES.cpp:770:36: error: ‘memcpy’ was not declared in this scope
众所周知,考虑到这些因素包括:

#include "AES.hpp"
#include <assert.h>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <iostream>
#包括“AES.hpp”
#包括
#包括
#包括
#包括
#包括
#包括

使用经过良好测试的加密库,如或,而不是搜索结果第40页上的一些随机片段。根据您所做的工作,您可能还应该使用更高级别的构造,而不是直接使用AES。

使用经过良好测试的加密库,如或,而不是搜索结果第40页上的一些随机片段。根据您所做的工作,您可能还应该使用更高级别的构造,而不是直接使用AES。

AES的参考实现可以在此处找到:。主源文件只包含
,但它甚至不依赖于此;在任何平台上使用它都绝对没有问题。

AES的参考实现可以在这里找到:。主源文件只包含
,但它甚至不依赖于此;您在任何平台上使用它都绝对没有问题。

因为这在谷歌搜索该错误时出现得很高,下面是我为拒绝在缺少ia32intrin.h的x64 CentOS系统上编译的程序所做的:

#if !defined(_rotr) && (defined(__i386__) || defined(__x86_64__))
static inline unsigned int _rotr(unsigned int n, const int count) {
 asm volatile (
  "rorl %1, %0;"
  : "=r" (n)
  : "nI" (count), "0" (n)
 );
 return n;
}
#endif
正如avakar提到的,您需要包括cstring,或者string.h,以获得memset和memcpy


除了操作码助记符外,
\u-rotl
的代码是相同的,操作码助记符是
roll
,因为这在谷歌搜索该错误时出现得很高,下面是我为拒绝在缺少ia32intrin.h的x64 CentOS系统上编译的程序所做的:

#if !defined(_rotr) && (defined(__i386__) || defined(__x86_64__))
static inline unsigned int _rotr(unsigned int n, const int count) {
 asm volatile (
  "rorl %1, %0;"
  : "=r" (n)
  : "nI" (count), "0" (n)
 );
 return n;
}
#endif
正如avakar提到的,您需要包括cstring,或者string.h,以获得memset和memcpy


除了操作码助记符外,
\u-rotl
的代码是相同的,这将是
roll

您需要包含
才能获得
memset
memcpy
。您只需使用C代码或适合您的平台的合适替代品替换rotate Intrinsic。首先解决密钥管理问题:您需要包含
才能获得
memset
,并且
memcpy
。您只需使用C代码或适合您的平台的替代品来替换rotate内部函数。首先解决密钥管理问题:我只需要一些加密,没有什么特别的。没什么大不了的。这只是我为了保持身材而做的一个小项目。所以我喜欢一些小的东西,尽管它可能没有那么好。即使这真的只是为了“保持身材”,而且你永远不会把它发泄到其他人身上,你做这样半途而废的事情也不会帮你自己的忙。如果你想要一个快速而小的库,请查看
libmcrypt
或类似的东西。我只需要一些加密,没什么特别的。没什么大不了的。这只是我为了保持身材而做的一个小项目。所以我喜欢一些小的东西,尽管它可能没有那么好。即使这真的只是为了“保持身材”,而且你永远不会把它发泄到其他人身上,你做这样半途而废的事情也不会帮你自己的忙。如果您想要一个快速、小型的库,请查看
libmcrypt
或类似的内容。