使用OpenSSL API解密失败

新孙孔 2018-11-23 04:14:45
现在知道密文,采用AES128 ECB加密。网页在线解密是可以解出来明文为123456789,但是写代码解不出来。困扰我一天了,有没有人能解答一下。我比较困扰的地方在于密钥的设置,自己加密解密一点问题都没有,但是知道密钥去解密文却解不出来。感觉是密钥转换有问题,就是不知道问题出在哪里。

代码如下:

int main(void)
{
AES_KEY aes;
char *key = "417490bbe32b07f6ee822f668a999046"; // 密钥
unsigned char key_hex[16] = {0};
char *ciphertext = "fcdcf51343011f7383e8e2aa1160d9d4"; // 密文
unsigned char cipher_hex[32] = {0};
char plaintext[32] = {0}; // 明文
int len = 0;

// 设置key
StrToHex(key_hex, key, 16);
AES_set_encrypt_key(key_hex, 128, &aes);

// 解密
StrToHex(cipher_hex, cipher, 16);
AES_ecb_encrypt(cipher_hex, plaintext, &aes, AES_DECRYPT);
}
...全文
369 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarelaky 2018-12-14
  • 打赏
  • 举报
回复
引用 楼主 新孙孔 的回复:
现在知道密文,采用AES128 ECB加密。网页在线解密是可以解出来明文为123456789,但是写代码解不出来。困扰我一天了,有没有人能解答一下。我比较困扰的地方在于密钥的设置,自己加密解密一点问题都没有,但是知道密钥去解密文却解不出来。感觉是密钥转换有问题,就是不知道问题出在哪里。

代码如下:

int main(void)
{
AES_KEY aes;
char *key = "417490bbe32b07f6ee822f668a999046"; // 密钥
unsigned char key_hex[16] = {0};
char *ciphertext = "fcdcf51343011f7383e8e2aa1160d9d4"; // 密文
unsigned char cipher_hex[32] = {0};
char plaintext[32] = {0}; // 明文
int len = 0;

// 设置key
StrToHex(key_hex, key, 16);
AES_set_encrypt_key(key_hex, 128, &aes);

// 解密
StrToHex(cipher_hex, cipher, 16);
AES_ecb_encrypt(cipher_hex, plaintext, &aes, AES_DECRYPT);
}

把数据字符串变成,16进制数据形式
key[]= { 0x41,0x74...}
ciphertext[]={0xfc,0xdc...}

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧