У меня есть строка ключа и секретная строка.
ключ: e23c51348e454515
secret: krZYd73dKRmWDOzjrdzH6KybIItDfYp / PHORDyEzwCw =
1015 с разрешением успешно код, как это:
/**
* AES Decrypt
*
* @param data: secret
* @param key: key
* @return
*/
public static String decryptEBC(String data, String key) {
try {
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] encrypted1 = Base64.decode(data, Base64.DEFAULT);
byte[] decryptData = cipher.doFinal(encrypted1);
return new String(decryptData);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Но я не могу расшифровать его с помощью кода c, мой код:
int aes128_ecb_decrypt(const uint8_t *key, uint8_t *in, int in_len, uint8_t *out)
{
int outlen;
int temp;
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
EVP_CIPHER_CTX_set_padding(ctx, 1);
if (!EVP_DecryptInit_ex(ctx, EVP_aes_128_ecb(), 0, key, NULL))
{
return -1;
}
if (!EVP_DecryptUpdate(ctx, out, &outlen, in, in_len))
{
return -2;
}
if (!EVP_DecryptFinal_ex(ctx, out + outlen, &temp)) {
return -3; // it stoped here
}
outlen += temp;
EVP_CIPHER_CTX_cleanup(ctx);
return outlen;
}
Что не так?