CAVP crypto 113.10.09
Implements various cryptographic algorithms for CAVP validation.
 
Loading...
Searching...
No Matches
myAes.h File Reference

Go to the source code of this file.

Functions

int aesEncrypt (int mode, int keySize, char *keyString, char *plaintextString, char *initialVectorString, char *ciphertextString)
 AES加密
 
int aesDecrypt (int mode, int keySize, char *keyString, char *ciphertextString, char *initialVectorString, char *plaintextString)
 AES解密
 
void aesEcbMCTEncrypt (int keySize, char *plaintextString, char *keyString)
 AES ECB模式的Monte Carlo Test (加密)
 
void aesEcbMCTDecrypt (int keySize, char *ciphertextString, char *keyString)
 AES ECB模式的Monte Carlo Test (解密)
 
void aesCbcMCTEncrypt (int keySize, char *plaintextString, char *keyString, char *initailVectorString)
 AES CBC模式的Monte Carlo Test (加密)
 
void aesCbcMCTDecrypt (int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
 AES CBC模式的Monte Carlo Test (解密)
 
void aesCfb8MCTEncrypt (int keySize, char *plaintextString, char *keyString, char *initailVectorString)
 AES CFB8模式的Monte Carlo Test (加密)
 
void aesCfb8MCTDecrypt (int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
 AES CFB8模式的Monte Carlo Test (解密)
 
void aesCfb128MCTEncrypt (int keySize, char *plaintextString, char *keyString, char *initailVectorString)
 AES CFB128模式的Monte Carlo Test (加密)
 
void aesCfb128MCTDecrypt (int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
 AES CFB128模式的Monte Carlo Test (解密)
 
void aesCtrMCTEncrypt (int keySize, char *plaintextString, char *keyString, char *initailVectorString)
 AES CTR模式的Monte Carlo Test (加密)
 
void aesCtrMCTDecrypt (int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
 AES CTR模式的Monte Carlo Test (解密)
 

Variables

const int AES_MODE_ECB
 
const int AES_MODE_CBC
 
const int AES_MODE_CFB8
 
const int AES_MODE_CFB128
 
const int AES_MODE_CTR
 
const int AES_KEY_SIZE_128
 
const int AES_KEY_SIZE_192
 
const int AES_KEY_SIZE_256
 

Function Documentation

◆ aesCbcMCTDecrypt()

void aesCbcMCTDecrypt ( int keySize,
char * ciphertextString,
char * keyString,
char * initailVectorString )

AES CBC模式的Monte Carlo Test (解密)

AES CBC模式的Monte Carlo Test (解密)
AES-CBC之蒙地卡羅測試函數,是依照以下這份文件中,6.4.2 節所描述的Monte Carlo Test – CBC (MCT-CBC) 演算法完成
此函式的輸入為key大小、密文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctCiphertext = "EA73C1416318FCF60537AAD61D9C1740";
char* mctKey = "87354C53CE306B6F5D09D9050085B64BB64F72311C423A0122840974C44D9F8B";
char* mctInitialVector = "84D31A689C1B7A92364BD4468874DD1B";
aesCbcMCTDecrypt(AES_KEY_SIZE_256, mctCiphertext, mctKey, mctInitialVector);
const int AES_KEY_SIZE_256
Definition myAes.c:15
void aesCbcMCTDecrypt(int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
AES CBC模式的Monte Carlo Test (解密)
Definition myAes.c:723
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
ciphertextString密文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCbcMCTEncrypt()

void aesCbcMCTEncrypt ( int keySize,
char * plaintextString,
char * keyString,
char * initailVectorString )

AES CBC模式的Monte Carlo Test (加密)

AES CBC模式的Monte Carlo Test (加密)
AES-CBC之蒙地卡羅測試函數,是依照以下這份文件中,6.4.2 節所描述的Monte Carlo Test – CBC (MCT-CBC) 演算法完成
此函式的輸入為key大小、明文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctPlaintext = "00CD7E8241EABFA3553EAD1C46DC0568";
char* mctKey = "E84ED46D2346D5A01D0B91310C2A081C";
char* mctInitialVector = "E86589D3AA6C004E077523E5109F6199";
aesCbcMCTEncrypt(AES_KEY_SIZE_128, mctPlaintext, mctKey, mctInitialVector);
const int AES_KEY_SIZE_128
Definition myAes.c:13
void aesCbcMCTEncrypt(int keySize, char *plaintextString, char *keyString, char *initailVectorString)
AES CBC模式的Monte Carlo Test (加密)
Definition myAes.c:581
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
plaintextString明文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCfb128MCTDecrypt()

void aesCfb128MCTDecrypt ( int keySize,
char * ciphertextString,
char * keyString,
char * initailVectorString )

AES CFB128模式的Monte Carlo Test (解密)

AES CFB128模式的Monte Carlo Test (解密)
AES-CFB128之蒙地卡羅測試函數,是依照以下這份文件中,6.4.6 節所描述的Monte Carlo Test – CFB128 (MCT-CFB128) 演算法完成
此函式的輸入為key大小、密文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctCiphertext = "AA4D5E000E28E3856E36110D80732E61";
char* mctKey = "4AFC928203A640E26DC0752E78484D4349B946334C4C77297EDEA3A8FE3C6519";
char* mctInitialVector = "3F3BEAC49657F44FBE44B582B4ECEB61";
aesCfb128MCTDecrypt(AES_KEY_SIZE_256, mctCiphertext, mctKey, mctInitialVector);
void aesCfb128MCTDecrypt(int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
AES CFB128模式的Monte Carlo Test (解密)
Definition myAes.c:992
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
ciphertextString密文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCfb128MCTEncrypt()

void aesCfb128MCTEncrypt ( int keySize,
char * plaintextString,
char * keyString,
char * initailVectorString )

AES CFB128模式的Monte Carlo Test (加密)

AES CFB128模式的Monte Carlo Test (加密)
AES-CFB128之蒙地卡羅測試函數,是依照以下這份文件中,6.4.6 節所描述的Monte Carlo Test – CFB128 (MCT-CFB128) 演算法完成
此函式的輸入為key大小、明文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctPlaintext = "89FB9451E4048AD1D8810942EF49A73D";
char* mctKey = "7C236C0C1AE21DA30A38C5F6F7E672533BA8775E7C936B4D";
char* mctInitialVector = "C65128AAC6E678D8BB7049399623BC43";
aesCfb128MCTEncrypt(AES_KEY_SIZE_192, mctPlaintext, mctKey, mctInitialVector);
void aesCfb128MCTEncrypt(int keySize, char *plaintextString, char *keyString, char *initailVectorString)
AES CFB128模式的Monte Carlo Test (加密)
Definition myAes.c:854
const int AES_KEY_SIZE_192
Definition myAes.c:14
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
plaintextString明文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCfb8MCTDecrypt()

void aesCfb8MCTDecrypt ( int keySize,
char * ciphertextString,
char * keyString,
char * initailVectorString )

AES CFB8模式的Monte Carlo Test (解密)

AES CFB8模式的Monte Carlo Test (解密)
AES-CFB8之蒙地卡羅測試函數,是依照以下這份文件中,6.4.5 節所描述的Monte Carlo Test – CFB8 (MCT-CFB8) 演算法完成
此函式的輸入為key大小、密文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctCiphertext = "C4";
char* mctKey = "D058DE728E496598A48D9D3CE5C3FA39";
char* mctInitialVector = "4454A28897DA67BA379A2759BC612A7A";
aesCfb8MCTDecrypt(AES_KEY_SIZE_128, mctCiphertext, mctKey, mctInitialVector);
void aesCfb8MCTDecrypt(int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
AES CFB8模式的Monte Carlo Test (解密)
Definition myAes.c:1332
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
ciphertextString密文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCfb8MCTEncrypt()

void aesCfb8MCTEncrypt ( int keySize,
char * plaintextString,
char * keyString,
char * initailVectorString )

AES CFB8模式的Monte Carlo Test (加密)

AES CFB8模式的Monte Carlo Test (加密)
AES-CFB8之蒙地卡羅測試函數,是依照以下這份文件中,6.4.5 節所描述的Monte Carlo Test – CFB8 (MCT-CFB8) 演算法完成
此函式的輸入為key大小、明文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctPlaintext = "5F";
char* mctKey = "86048A0BE20AE4CD1C20CD11085160CB5B7EEA5F3D970314";
char* mctInitialVector = "1F110844D003CD50923BC9C7A40A9E2E";
aesCfb8MCTEncrypt(AES_KEY_SIZE_192, mctPlaintext, mctKey, mctInitialVector);
void aesCfb8MCTEncrypt(int keySize, char *plaintextString, char *keyString, char *initailVectorString)
AES CFB8模式的Monte Carlo Test (加密)
Definition myAes.c:1122
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
plaintextString明文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCtrMCTDecrypt()

void aesCtrMCTDecrypt ( int keySize,
char * ciphertextString,
char * keyString,
char * initailVectorString )

AES CTR模式的Monte Carlo Test (解密)

AES CTR模式的Monte Carlo Test (解密)
AES-CTR之蒙地卡羅測試函數,是依照以下這份文件中,6.4.1 節所描述的Monte Carlo Test – CBC (MCT-CBC) 演算法完成
用CBC模式的MCT演算法,是因為文件中沒有提到CTR模式的MCT演算法,所以用CBC模式的MCT演算法來代替
此函式的輸入為key大小、密文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctCiphertext = "D1536CC9D895E66A2CD2AF2A9E7F51F6";
char* mctKey = "B7535C22380E978B78ADE34C092D0E0CCCA8AF5D53FF4A48D44ED14945203149";
char* mctInitialVector = "BACF7EAFDF56AA0324C0E8DCE7D95103";
aesCtrMCTDecrypt(AES_KEY_SIZE_256, mctCiphertext, mctKey, mctInitialVector);
void aesCtrMCTDecrypt(int keySize, char *ciphertextString, char *keyString, char *initailVectorString)
AES CTR模式的Monte Carlo Test (解密)
Definition myAes.c:1684
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
ciphertextString密文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesCtrMCTEncrypt()

void aesCtrMCTEncrypt ( int keySize,
char * plaintextString,
char * keyString,
char * initailVectorString )

AES CTR模式的Monte Carlo Test (加密)

AES CTR模式的Monte Carlo Test (加密)
AES-CTR之蒙地卡羅測試函數,是依照以下這份文件中,6.4.1 節所描述的Monte Carlo Test – CBC (MCT-CBC) 演算法完成
用CBC模式的MCT演算法,是因為文件中沒有提到CTR模式的MCT演算法,所以用CBC模式的MCT演算法來代替
此函式的輸入為key大小、明文、密鑰及初始向量
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctPlaintext = "834ED5B41F7C1FDE7ECA5079A13F0F93";
char* mctKey = "79A75419357738F2C2769C91EA50627B656F7982E3B62603";
char* mctInitialVector = "191A9F9247E818F081F621A186102400";
aesCtrMCTEncrypt(AES_KEY_SIZE_192, mctPlaintext, mctKey, mctInitialVector);
void aesCtrMCTEncrypt(int keySize, char *plaintextString, char *keyString, char *initailVectorString)
AES CTR模式的Monte Carlo Test (加密)
Definition myAes.c:1544
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
plaintextString明文的hex string
keyStringkey的hex string
initailVectorString初始向量的hex string

◆ aesDecrypt()

int aesDecrypt ( int mode,
int keySize,
char * keyString,
char * ciphertextString,
char * initialVectorString,
char * plaintextString )

AES解密

AES的解密,可以選擇不同的模式、不同的key size
此函式的輸入為: AES模式選擇、KEY長度、密鑰、密文字串、初始向量字串
此函式的輸出為: 明文字串(修改最後一個參數指標指向的空間)、錯誤碼
使用範例:

char* key = "B21DCEA468CF34D2CE0C873B2AD4DBCF8A91956DB6783CD0DFC9F95C1C90FA0C";
char* ciphertext = "DD3F2C9A21DFC21E1714BFB57B690657";
char* initialVector = "88AA5D4678AB8A3C5DFF508B9E7BB7FF";
char plaintext[1024];
aesDecrypt(AES_MODE_CFB128, AES_KEY_SIZE_256, key, ciphertext, initialVector, plaintext);
printf("plaintext: %s\n", plaintext); //7CF68816643C26994D26C0C5B7EC5EFC
int aesDecrypt(int mode, int keySize, char *keyString, char *ciphertextString, char *initialVectorString, char *plaintextString)
AES解密
Definition myAes.c:229
const int AES_MODE_CFB128
Definition myAes.c:10
Parameters
modeAES_MODE_ECB, AES_MODE_CBC, AES_MODE_CFB8, AES_MODE_CFB128, AES_MODE_CTR
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
keyStringkey的hex string
ciphertextString密文的hex string
initialVectorString初始向量的hex string
plaintextString輸出的明文的hex string
Returns
0:成功 -1:失敗
Attention
ECB模式不需要初始向量,所以initialVectorString應設為空字串 (不要設為NULL)
See also
aesEncrypt()

◆ aesEcbMCTDecrypt()

void aesEcbMCTDecrypt ( int keySize,
char * ciphertextString,
char * keyString )

AES ECB模式的Monte Carlo Test (解密)

AES ECB模式的Monte Carlo Test (解密)
AES-ECB之蒙地卡羅測試函數,是依照以下這份文件中,6.4.1 節所描述的Monte Carlo Test – ECB (MCT-ECB) 演算法完成
此函式的輸入為key大小、密文、及密鑰
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctCiphertext = "CCABCC4339B601C08E8B526AF17EE391";
char* mctKey = "466A8707CE1A3B937BC6A11803E57A08";
aesEcbMCTDecrypt(AES_KEY_SIZE_128, mctCiphertext, mctKey);
void aesEcbMCTDecrypt(int keySize, char *ciphertextString, char *keyString)
AES ECB模式的Monte Carlo Test (解密)
Definition myAes.c:509
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
ciphertextString密文的hex string
keyStringkey的hex string

◆ aesEcbMCTEncrypt()

void aesEcbMCTEncrypt ( int keySize,
char * plaintextString,
char * keyString )

AES ECB模式的Monte Carlo Test (加密)

AES ECB模式的Monte Carlo Test (加密)
AES-ECB之蒙地卡羅測試函數,是依照以下這份文件中,6.4.1 節所描述的Monte Carlo Test – ECB (MCT-ECB) 演算法完成
此函式的輸入為key大小、明文、及密鑰
此函式輸出為MCT測試中,100個狀態(state)下的,明密文及密鑰
使用範例:

char* mctPlaintext = "3E999BFA92248C700FDA73AACDF6FE3C";
char* mctKey = "93D5DFAE5D069713A68CA6003214AE4F97A39767A5A88C95";
aesEcbMCTEncrypt(AES_KEY_SIZE_192, mctPlaintext, mctKey);
void aesEcbMCTEncrypt(int keySize, char *plaintextString, char *keyString)
AES ECB模式的Monte Carlo Test (加密)
Definition myAes.c:439
Parameters
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
plaintextString明文的hex string
keyStringkey的hex string

◆ aesEncrypt()

int aesEncrypt ( int mode,
int keySize,
char * keyString,
char * plaintextString,
char * initialVectorString,
char * ciphertextString )

AES加密

AES的加密,可以選擇不同的模式、不同的key size
此函式的輸入為: AES模式選擇、KEY長度、密鑰、明文字串、初始向量字串
此函式的輸出為: 密文字串(修改最後一個參數指標指向的空間)、錯誤碼
使用範例:

char* key = "0000000000000000000000000000000000000000000000000000000000000000";
char* plaintext = "FFFFFFFFFFFFFFFFFFFFFFFFC0000000";
char* initialVector = "00000000000000000000000000000000";
char ciphertext[1024];
aesEncrypt(AES_MODE_CBC, AES_KEY_SIZE_256, key, plaintext, initialVector, ciphertext);
printf("ciphertext: %s\n", ciphertext); //E2775E4B59C1BC2E31A2078C11B5A08C
int aesEncrypt(int mode, int keySize, char *keyString, char *plaintextString, char *initialVectorString, char *ciphertextString)
AES加密
Definition myAes.c:18
const int AES_MODE_CBC
Definition myAes.c:8
Parameters
modeAES_MODE_ECB, AES_MODE_CBC, AES_MODE_CFB8, AES_MODE_CFB128, AES_MODE_CTR
keySizeAES_KEY_SIZE_128, AES_KEY_SIZE_192, AES_KEY_SIZE_256
keyStringkey的hex string
plaintextString明文的hex string
initialVectorString初始向量的hex string
ciphertextString輸出的密文的hex string
Returns
0:成功 -1:失敗
Attention
ECB模式不需要初始向量,所以initialVectorString應設為空字串 (不要設為NULL)
See also
aesDecrypt()

Variable Documentation

◆ AES_KEY_SIZE_128

const int AES_KEY_SIZE_128
extern

◆ AES_KEY_SIZE_192

const int AES_KEY_SIZE_192
extern

◆ AES_KEY_SIZE_256

const int AES_KEY_SIZE_256
extern

◆ AES_MODE_CBC

const int AES_MODE_CBC
extern

◆ AES_MODE_CFB128

const int AES_MODE_CFB128
extern

◆ AES_MODE_CFB8

const int AES_MODE_CFB8
extern

◆ AES_MODE_CTR

const int AES_MODE_CTR
extern

◆ AES_MODE_ECB

const int AES_MODE_ECB
extern