導航:首頁 > 文檔加密 > aes加密測試工具

aes加密測試工具

發布時間:2022-01-17 19:42:41

A. aes能破解嗎

密碼破解分為兩種,一是演算法破解,二是暴力破解。
演算法破解就是找到加密演算法的漏洞,進行技巧性的破解。
暴力破解是在知道加密算的情況下,用各種密碼去測試。關於暴力破解也不是真正的暴力,有很多技術巧。如有效的密碼字典就是一例。

AES目前沒有演算法浮出水面。
AES暴力破解與密碼強度(如字串的MD5值就難,簡單字串在密碼字典排序告前,相對容易一些)和計算能力有關。但AES密鑰長度太長,各種排列組合簡直是天文數字,現有能力民間單機不可能破解。當然也可能一買彩票就中大獎,但似乎比那概率小得多。

B. DES和AES加密的ECB模式到底有多脆弱,不能在商業項目中使用嗎 - PHP進階討論

破解是相對的,如果開鎖的代價大於箱子裡面的東西,就沒有必要去開鎖了每個演算法都有其適用的地方的des比較簡單,運算快速,對機器要求小aes可防止傳錯,且加密後,體積不會太大,可用於傳輸大量數據

C. 無線網路中的TKIP和AES有區別么

1、傳輸速度不同

AES比TKIP採用更高級的加密技術,如採用TKIP,網路的傳輸速度就會被限制在54Mbps以下。

2、安全性能不同

AES安全性比 TKIP 好。

TKIP在設計時考慮了當時非常苛刻的限制因素:必須在現有硬體上運行,因此不能使用計算先進的加密演算法。而且在使用TKIP演算法時路由器的吞吐量會下降3成至5成,大大地影響了路由器的性能。

3、適用情況不同

TKIP加密演算法經常在老的無線網卡上使用,適用於802.1x無線傳輸協議,TKIP中密碼使用的密鑰長度為128位;

AES加密演算法是在新無線網卡上使用,適用於802.11n無線傳輸協議,AES加密數據塊和密鑰長度可以是128比特、192比特、256比特中的任意一個。

D. 聯想電腦檢測 AES測試不適用 是什麼意思

AES:高級加密標准指令集(或稱英特爾高級加密標准新指令,簡稱AES-NI)是一個x86指令集架構的擴展,用於Intel和AMD微處理器,由Intel在2008年3月提出。該指令集的目的是改進應用程序使用高級加密標准(AES)執行加密和解密的速度。(AES-NI是一種CPU特性。)
有2個原因,聯想在bios屏蔽了aes指令集,或是cpu不支持aes指令集。

E. 成都哪裡可以做ICP-AES測試,最好能用高鹽霧化器做。

需要檢測的產品是?東標檢測中心可以做

F. 求AES加解/密碼密軟體程序!!!

有界面,我這里有個,但是是c#語言的,你以為如何?
下面是c版本的
AES加密演算法源代碼
//AES.h

#define decrypt TRUE
#define encrypt FALSE
#define TYPE BOOL

typedef struct _AES{
int Nb;
int Nr;
int Nk;
unsigned long *Word;
unsigned long *State;
}AES;

/*
加密數據
byte *input 明文
byte *inSize 明文長
byte *out 密文存放的地方
byte *key 密鑰key
byte *keySize 密鑰長
*/
void Cipher(
unsigned char* input,
int inSize,
unsigned char* out,
unsigned char* key,
int keySize);

/*
解密數據
byte *input 密文
int *inSize 密文長
byte *out 明文存放的地方
byte *key 密鑰key
int *keySize 密鑰長
*/
void InvCipher(
unsigned char* input,
int inSize,
unsigned char* out,
unsigned char* key,
int keySize);

/*
生成加密用的參數AES結構
int inSize 塊大小
byte* 密鑰
int 密鑰長
unsigned long 屬性(標實類型)
返回AES結構指針
*/
AES *InitAES(AES *aes,
int inSize,
unsigned char* key,
int keySize, TYPE type);

/*
生成加密用的參數AES結構
int inSize 塊大小
byte* 密鑰
int 密鑰長
返回AES結構指針
*/
AES *InitAES(
int inSize,
unsigned char* key,
int keySize, BOOL );

/*
加密時進行Nr輪運算
AES * aes 運行時參數
*/
void CipherLoop(
AES *aes);
/*
解密時進行Nr輪逆運算
AES * aes 運行時參數
*/
void InvCipherLoop(
AES *aes);

/*
釋放AES結構和State和密鑰庫word
*/
void freeAES(
AES *aes);

//AES.cpp

#include "stdafx.h"
#include
#include
#include "AES.h"
unsigned char* SubWord(unsigned char* word);
unsigned long* keyExpansion(unsigned char* key, int Nk, int Nr,int);
/*
加密數據
byte *input 明文
byte *inSize 明文長
byte *out 密文存放的地方
byte *key 密鑰key
byte *keySize 密鑰長
*/
void Cipher(unsigned char* input, int inSize, unsigned char* out, unsigned char* key, int keySize)
{
AES aes ;
InitAES(&aes,inSize,key,keySize,encrypt);

memcpy(aes.State,input,inSize);
CipherLoop(&aes);
memcpy(out,aes.State,inSize);

}

/*
解密數據
byte *input 密文
int *inSize 密文長
byte *out 明文存放的地方
byte *key 密鑰key
int *keySize 密鑰長
*/
void InvCipher(unsigned char* input, int inSize, unsigned char* out, unsigned char* key, int keySize)
{
AES aes;
InitAES(&aes,inSize,key,keySize,decrypt);
memcpy(aes.State,input,inSize);
InvCipherLoop(&aes);
memcpy(aes.State,out,inSize);
}

/*
生成加密用的參數AES結構
int inSize 塊大小
byte* 密鑰
int 密鑰長
返回AES結構指針
*/
AES *InitAES(AES *aes,int inSize, unsigned char *key, int keySize, TYPE type)
{
int Nb = inSize >>2,
Nk = keySize >>2,
Nr = Nb < Nk ? Nk:Nb+6;
aes->Nb = Nb;
aes->Nk = Nk;
aes->Nr = Nr;
aes->Word = keyExpansion(key,Nb,Nr,Nk);

aes->State = new unsigned long[Nb+3];
if(type)
aes->State += 3;
return aes;
}

/*
生成加密用的參數AES結構
int inSize 塊大小
byte* 密鑰
int 密鑰長
返回AES結構指針
*/
AES *InitAES(int inSize, unsigned char* key, int keySize,unsigned long type)
{
return InitAES(new AES(),inSize,key,keySize,type);
}
/*
*/
void CipherLoop(AES *aes)
{
unsigned char temp[4];
unsigned long *word8 = aes->Word,
*State = aes->State;

int Nb = aes->Nb,
Nr = aes->Nr;

int r;
for (r = 0; r < Nb; ++r)
{
State[r] ^= word8[r];
}
for (int round =1; round {
word8 += Nb;
/*
假設Nb=4;
---------------------
| s0 | s1 | s2 | s3 |
---------------------
| s4 | s5 | s6 | s7 |
---------------------
| s8 | s9 | sa | sb |
---------------------
| sc | sd | se | sf |
---------------------
| | | | |
---------------------
| | | | |
---------------------
| | | | |
---------------------
*/
memcpy(State+Nb,State,12);
/*
Nb=4;
---------------------
| s0 | | | |
---------------------
| s4 | s5 | | |
---------------------
| s8 | s9 | sa | |
---------------------
| sc | sd | se | sf |
---------------------
| | s1 | s2 | s3 |
---------------------
| | | s6 | s7 |
---------------------
| | | | sb |
---------------------
*/
for(r =0; r {
/*
temp = {Sbox[s0],Sbox[s5],Sbox[sa],Sbox[sf]};
*/
temp[0] = Sbox[*((unsigned char*)State)];
temp[1] = Sbox[*((unsigned char*)(State+1)+1)];
temp[2] = Sbox[*((unsigned char*)(State+2)+2)];
temp[3] = Sbox[*((unsigned char*)(State+3)+3)];

*((unsigned char*)State) = Log_02[temp[0]] ^ Log_03[temp[1]] ^ temp[2] ^ temp[3];
*((unsigned char*)State+1) = Log_02[temp[1]] ^ Log_03[temp[2]] ^ temp[3] ^ temp[0];
*((unsigned char*)State+2) = Log_02[temp[2]] ^ Log_03[temp[3]] ^ temp[0] ^ temp[1];
*((unsigned char*)State+3) = Log_02[temp[3]] ^ Log_03[temp[0]] ^ temp[1] ^ temp[2];

*State ^= word8[r];
State++;
}
State -= Nb;
}

memcpy(State+Nb,State,12);

word8 += Nb;
for(r =0; r {
*((unsigned char*)State) = Sbox[*(unsigned char*)State];
*((unsigned char*)State+1) = Sbox[*((unsigned char*)(State+1)+1)];
*((unsigned char*)State+2) = Sbox[*((unsigned char*)(State+2)+2)];
*((unsigned char*)State+3) = Sbox[*((unsigned char*)(State+3)+3)];

*State ^= word8[r];
State++;
}
}
/*
解密時進行Nr輪逆運算
AES * aes 運行時參數
*/
void InvCipherLoop(AES *aes)
{
unsigned long *Word = aes->Word,
*State = aes->State;

int Nb = aes->Nb,
Nr = aes->Nr;

unsigned char temp[4];

int r =0;
Word += Nb*Nr;
for (r = 0; r < Nb; ++r)
{
State[r] ^= Word[r];
}

State -= 3;

for (int round = Nr-1; round > 0; --round)
{
/*
假設Nb=4;
---------------------
| | | | |
---------------------
| | | | |
---------------------
| | | | |
---------------------
| s0 | s1 | s2 | s3 |
---------------------
| s4 | s5 | s6 | s7 |
---------------------
| s8 | s9 | sa | sb |
---------------------
| sc | sd | se | sf |
---------------------
*/
memcpy(State,State+Nb,12);
/*
Nb=4;
---------------------
| | | | s7 |
---------------------
| | | sa | sb |
---------------------
| | sd | se | sf |
---------------------
| s0 | s1 | s2 | s3 |
---------------------
| s4 | s5 | s6 | |
---------------------
| s8 | s9 | | |
---------------------
| sc | | | |
---------------------
*/

Word -= Nb;
State += Nb+2;

for(r = Nb-1; r >= 0; r--)
{
/*
temp = {iSbox[s0],iSbox[sd],iSbox[sa],iSbox[s7]};
*/
temp[0] = iSbox[*(byte*)State];
temp[1] = iSbox[*((byte*)(State-1)+1)];
temp[2] = iSbox[*((byte*)(State-2)+2)];
temp[3] = iSbox[*((byte*)(State-3)+3)];

*(unsigned long*)temp ^= Word[r];

*(unsigned char*)State = Log_0e[temp[0]] ^ Log_0b[temp[1]] ^ Log_0d[temp[2]] ^ Log_09[temp[3]];
*((unsigned char*)State+1) = Log_0e[temp[1]] ^ Log_0b[temp[2]] ^ Log_0d[temp[3]] ^ Log_09[temp[0]];
*((unsigned char*)State+2) = Log_0e[temp[2]] ^ Log_0b[temp[3]] ^ Log_0d[temp[0]] ^ Log_09[temp[1]];
*((unsigned char*)State+3) = Log_0e[temp[3]] ^ Log_0b[temp[0]] ^ Log_0d[temp[1]] ^ Log_09[temp[2]];

State --;
}
State -= 2;
}

Word -= Nb;
memcpy(State,State+Nb,12);

State += Nb+2;
for(r = Nb-1; r >= 0; r--)
{

*(unsigned char*)State = iSbox[*(unsigned char*)State];
*((unsigned char*)State+1) = iSbox[*((unsigned char*)(State-1)+1)];
*((unsigned char*)State+2) = iSbox[*((unsigned char*)(State-2)+2)];
*((unsigned char*)State+3) = iSbox[*((unsigned char*)(State-3)+3)];

*State ^= Word[r];
State --;
}
}
/*
*--------------------------------------------
*|k0|k1|k2|k3|k4|k5|k6|k7|k8|k9|.......|Nk*4|
*--------------------------------------------
*Nr輪密鑰庫
*每個密鑰列長度為Nb
*---------------------
*| k0 | k1 | k2 | k3 |
*---------------------
*| k4 | k5 | k6 | k7 |
*---------------------
*| k8 | k9 | ka | kb |
*---------------------
*| kc | kd | ke | kf |
*---------------------
*/
unsigned long* keyExpansion(byte* key, int Nb, int Nr, int Nk)
{
unsigned long *w =new unsigned long[Nb * (Nr+1)]; // 4 columns of bytes corresponds to a word

memcpy(w,key,Nk<<2);
unsigned long temp;

for (int c = Nk; c < Nb * (Nr+1); ++c)
{
//把上一輪的最後一行放入temp
temp = w[c-1];
//判斷是不是每一輪密鑰的第一行
if (c % Nk == 0)
{
//左旋8位
temp = (temp<<8)|(temp>>24);
//查Sbox表
SubWord((byte*)&temp);
temp ^= Rcon[c/Nk];
}
else if ( Nk > 6 && (c % Nk == 4) )
{
SubWord((byte*)&temp);
}
//w[c-Nk] 為上一輪密鑰的第一行
w[c] = w[c-Nk] ^ temp;
}
return w;
}

unsigned char* SubWord(unsigned char* word)
{
word[0] = Sbox[ word[0] ];
word[1] = Sbox[ word[1] ];
word[2] = Sbox[ word[2] ];
word[3] = Sbox[ word[3] ];
return word;
}
/*
釋放AES結構和State和密鑰庫word
*/
void freeAES(AES *aes)
{
// for(int i=0;iNb;i++)
// {
// printf("%d\n",i);
// free(aes->State[i]);
// free(aes->Word[i]);
// }
// printf("sdffd");
}

G. ROHS檢測設備OES和AES有何差別

AES是以前的叫法,不準確,現在改為OES。

H. java aes加密與網上在線加密不同。誰能告訴我為什麼求個正確的例子,謝謝了!

Cipher.getInstance("AES/ECB/PKCS5Padding");
就是這個東西有很多標準的,你得看下線上用的是什麼標准

AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)

I. 誰解釋一下 AES 加密演算法的問題

最近剛剛接觸到RobotFramework,發現這個工具倒是可以滿足我的要求,而且可以結合seleniumLibrary,用來做web的自動化測試相當不錯。之前我也接觸過selenium,不過感覺那個工具更貼近開發人員使用,有了robotFramework之後,感覺這個工具相當強大,而且是貼近測試人員的。之所以說強大,主要是這些測試腳本都可以用文本格式保存(如txt/html等)

==安裝篇==
如果有想學的朋友可以自己下載以下文件安裝(Google-code里可以找到大部分的安裝文件):
這篇文章的內容比較舊了,最新的安裝指南請查看 更新篇
python-2.7.1.msi(首先要有python,請選擇將Python加入Path)
wxPython2.8-win32-unicode-2.8.11.0-py27.exe(wxPython,必須要的)
robotframework-2.6.0.win32.exe(然後裝robot的Framework)
robotframework-ride-0.38.1.win32.exe(robotFramework的IDE,很不錯)
robotframework-seleniumlibrary-2.8.win32.exe(seleniumLibrary)

安裝成功後
執行[PythonDir]\Scripts\ride.py
看到界面就是安裝成功了。

如果需要AutoIt支持就下載下面2個東東。
AutoItLibrary-1.1
pywin32-216.win32-py2.7.exe

==入門篇==
安裝完成了,這個框架可以說是基於keyword的操作,按F5可以看到所有載入的keyword。
首先新增一個project

然後新增suite

然後新增test case,接著在suite層級add library,把selenium library加進來,添加後按F5檢驗是否添加成功,如圖

OK,繼續在suite的setting里設置suite啟動和結束的keyword,即Start Selenium Server和Stop Selenium Server,他會在運行時幫助我們自動啟動seleniumserver。

接下來在test case里添加一個步驟,open browser(一般用selenium做web測試都要用這個方法來打開瀏覽器),添加後關鍵字變成藍色表示找到關鍵字了,否則可能是拼寫錯誤或者沒有載入相應的library。紅色表示有一個必選參數要給定輸入值,具體參數可以看F5里的keyword說明。

輸入參數,第二個參數默認是firefox,不過我沒裝,就用ie吧。

以上只是一個簡單的例子,沒有詳細說明每個步驟的操作,只是初步介紹。後續再詳細介紹。

J. loadrunner提交http中的密文AES數據和腳本中的參數不一致,該怎麼解決

這個屬於urlEncoding字元串編碼問題,使用了兩次urlEncoding當然會不對啦。
在客戶端和伺服器端的協議要一致,是否都強制使用了urlEncoding,相同次數的urlEncoding。要保證傳輸的字元集在http協議傳輸字元集以內;否則,就要進行url encoding進行轉義,轉義的次數客戶端和伺服器端要相同。
在傳輸的過程中,使用encodeURIComponent,可以將一些字元轉換為適宜http傳輸的字元,例如'='會被轉換為'%3d'或者'%3D',即字元轉義。伺服器會將'%3D'解釋為一個'='。
AES密文是BASE64編碼,其字元集是{A-Z}|{a-z}|{0-9}|{+,/},其中'+'和'/'可以轉義為'%2B'以和'%2F','='是AES加密用來補足尾數的數位的,會被轉義為'%3D'。因此對AES進行一次urlEncoding即可,伺服器收到後解析使用url decoding一次,即可將密文進行AES解密。

如果對AES密文進行了兩次urlEncoding,那麼'%2B', '%2F', '%3D'中的'%'會被轉義為'%25', 這樣原本為'%2B'的字元串就會轉換為'%252B', 如何伺服器只進行了一次urldecoding,直接拿去AES解密,當然會報錯。

閱讀全文

與aes加密測試工具相關的資料

熱點內容
矩陣計算java 瀏覽:230
如何把各銀行app整合 瀏覽:877
方舟生存進化手游版如何建伺服器 瀏覽:288
哪裡購買黃金app 瀏覽:661
中國聯通app優惠購功能在哪裡 瀏覽:227
dream伺服器密碼是什麼 瀏覽:222
程序員自救 瀏覽:486
cmd殺死進程命令 瀏覽:235
ipad激活伺服器地址 瀏覽:451
單片機開始直流電機壓降問題 瀏覽:17
伺服器地址失敗怎麼辦 瀏覽:146
安卓手機怎麼下載蘇聯游戲 瀏覽:130
主教的命令 瀏覽:805
php判斷變數為空 瀏覽:743
你演我猜安卓版本怎麼用 瀏覽:910
已夠app哪裡看 瀏覽:1007
程序員怎麼學會開車的技巧 瀏覽:785
網易郵箱如何刪除伺服器郵件 瀏覽:154
java多個泛型 瀏覽:276
安卓折扣號怎麼充值 瀏覽:604