发送不了链接。。。算了,就说说怎么做的吧。
直接AES128 ECB方式解密。源码奉上
int aes128_ecb_decrypt(const uint8_t *key, uint8_t *in, int in_len, uint8_t *out) {
int outlen;
int temp;
EVP_CIPHER_CTX Object;
EVP_CIPHER_CTX_init(&Object);
EVP_CIPHER_CTX_set_padding(&Object, 1);
if (!EVP_DecryptInit_ex(&Object, EVP_aes_128_ecb(), 0, key, NULL)) {
return -1;
}
if (!EVP_DecryptUpdate(&Object, out, &outlen, in, in_len))
{
return -2;
}
if (!EVP_DecryptFinal_ex(&Object, out + outlen, &temp)) {
return -3;
}
outlen += temp;
EVP_CIPHER_CTX_cleanup(&x);
return outlen;
}
然后就是keybox。大家自己观察这个格式就懂了,文件头22偏移开始是数据段。
直接AES128 ECB方式解密。源码奉上
int aes128_ecb_decrypt(const uint8_t *key, uint8_t *in, int in_len, uint8_t *out) {
int outlen;
int temp;
EVP_CIPHER_CTX Object;
EVP_CIPHER_CTX_init(&Object);
EVP_CIPHER_CTX_set_padding(&Object, 1);
if (!EVP_DecryptInit_ex(&Object, EVP_aes_128_ecb(), 0, key, NULL)) {
return -1;
}
if (!EVP_DecryptUpdate(&Object, out, &outlen, in, in_len))
{
return -2;
}
if (!EVP_DecryptFinal_ex(&Object, out + outlen, &temp)) {
return -3;
}
outlen += temp;
EVP_CIPHER_CTX_cleanup(&x);
return outlen;
}
然后就是keybox。大家自己观察这个格式就懂了,文件头22偏移开始是数据段。