2011-09-29 84 views
0

我需要一个小的,如两个拼接版本的AES加密。我GOOGLE搜索AES - Advanced Encryption Standard(源代码),但代码似乎是为Windows编写的,我需要一个多平台。AES加密quellcode

是否有任何其他已知的AES加密小版本或在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> 
+0

你需要包含''来获得'memset'和'memcpy'。 – avakar

+0

您只需用C代码或适合您的平台的替换替换旋转内在函数。 –

+0

**首先解决密钥管理问题**:http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx –

回答

4

使用经过充分测试的加密库,如cryptlibOpenSSL,而不是一些跑在搜索结果的第40页找到的dom片段。根据你在做什么,你可能也应该直接使用高级构造而不是AES。

+0

以及我只需要一些加密,没什么奇特的。没有什么是真的。这只是我正在做的一个小型项目,以保持体形。所以我喜欢小东西,尽管它可能不太好。 – Sim

+2

即使这真的只是“保持形状”,你永远不会在其他任何人身上释放这个东西,但你仍然没有为自己做一件事,做一些这样的事情。如果你想要一个快速和小型的图书馆,看看'libmcrypt'或类似的东西。 –

0

因为这种高出现在谷歌搜索的错误,这是我做我的程序这是拒绝编译64 CentOS系统缺乏ia32intrin.h上:

#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。

_rotl的代码除了操作码助记符以外将是相同的,这将是roll