2011-09-29 85 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