Java PKCS#5填充用于C/C+中的AES加密+;
我在Java PKCS#5填充用于C/C+中的AES加密+;,java,c++,encryption,openssl,aes,Java,C++,Encryption,Openssl,Aes,我在JAVA中添加了AES/ECB/pkcs5p加密。现在我在C/C++中寻找等效方法。我确实使用以下代码在C中进行了加密: const unsigned char *key = (unsigned char *)"A2XTXFEQFOPZFAKXFOPZFAK5"; unsigned char input[] = {"Hello World"}; int iLen = strlen((char*)input); int len = 0; if(iLen % 16 == 0){ len =
JAVA
中添加了AES/ECB/pkcs5p加密。现在我在C/C++
中寻找等效方法。我确实使用以下代码在C中进行了加密:
const unsigned char *key = (unsigned char *)"A2XTXFEQFOPZFAKXFOPZFAK5";
unsigned char input[] = {"Hello World"};
int iLen = strlen((char*)input);
int len = 0;
if(iLen % 16 == 0){
len = iLen;
}
else{
len = (iLen/16)*16 + 16;
}
unsigned char output[len]; //next 16bit
AES_KEY enc_key;
AES_set_encrypt_key(key, strlen((char*)key)*8, &enc_key);
int position = 0;
while(position < iLen){
AES_ecb_encrypt(input+position,output+position,&enc_key,AES_ENCRYPT);
position += 16;
}
const unsigned char*key=(unsigned char*)“A2XTXFEQFOPZFAKXFOPZFAK5”;
无符号字符输入[]={“Hello World”};
int-iLen=strlen((char*)输入;
int len=0;
如果(iLen%16==0){
len=iLen;
}
否则{
len=(iLen/16)*16+16;
}
无符号字符输出[len]//下一个16位
AES_键和enc_键;
AES设置加密密钥(密钥、strlen((char*)密钥)*8和加密密钥);
int位置=0;
while(位置
使用填充时,必须始终添加填充,即使输入是块大小的倍数
不正确,这是一个常见错误:
if(iLen % 16 == 0){
len = iLen;
}
正确:
int blockSize = 16;
int len = iLen + blockSize - (iLen % blockSize);
看