首页
社区
课程
招聘
[求助]OpenSSL中的函数问题
发表于: 2011-9-30 08:50 6008

[求助]OpenSSL中的函数问题

2011-9-30 08:50
6008
AES_set_decrypt_key
AES_decryp

的参数和用法是?现在大概知道了AES_set_decrypt_key的用法
但是AES_decryp的参数不太清楚

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 498
活跃值: (1552)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wxq
2
控件传上来大家学习下
2011-9-30 09:09
0
雪    币: 75
活跃值: (723)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
这个我用过,参考下
#define AES_BLOCK_SIZE 16
unsigned char   rkey[16] =
{
        0x20,0x66,0x5F,0x65,0x72,0x72,0x3B,0x0D,0x0A,0x09,0x09,0x09,0x7D,0x0D,0x0A,0x09
};
unsigned char   saved_iv[AES_BLOCK_SIZE * 6] =
{
        0x09,0x65,0x6C,0x73,0x65,0x0D,0x0A,0x23,0x65,0x6E,0x64,0x69,0x66,0x0D,0x0A,0x09,\
        0x09,0x69,0x66,0x20,0x28,0x61,0x6C,0x67,0x5F,0x6B,0x20,0x26,0x20,0x53,0x53,0x4C,\
        0x5F,0x6B,0x47,0x4F,0x53,0x54,0x29,0x20,0x0D,0x0A,0x09,0x09,0x09,0x7B,0x0D,0x0A,\
        0x09,0x09,0x09,0x69,0x6E,0x74,0x20,0x72,0x65,0x74,0x20,0x3D,0x20,0x30,0x3B,0x0D,\
        0x0A,0x09,0x09,0x09,0x45,0x56,0x50,0x5F,0x50,0x4B,0x45,0x59,0x5F,0x43,0x54,0x58,\
        0x20,0x2A,0x70,0x6B,0x65,0x79,0x5F,0x63,0x74,0x78,0x3B,0x0D,0x0A,0x09,0x09,0x09
};
void AES_6Block_Encrypt(unsigned char *plaintext,unsigned char *ciphertext)
{

    AES_KEY         key;
    unsigned char   iv[AES_BLOCK_SIZE * 6];

    int nr_of_bits = 0;
    int nr_of_bytes = 0;

    memset(plaintext, 0, AES_BLOCK_SIZE * 6);
    memset(ciphertext, 0, AES_BLOCK_SIZE * 6);
    memcpy(iv, saved_iv, sizeof(iv));

    nr_of_bits = 8 * sizeof(rkey);
    AES_set_encrypt_key(rkey, nr_of_bits, &key);
    nr_of_bytes = sizeof(plaintext);

    return AES_cbc_encrypt(plaintext,ciphertext,nr_of_bytes,&key,iv,AES_ENCRYPT);
}
2011-9-30 10:27
0
雪    币: 75
活跃值: (723)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
AES的轮密钥是AES_set_encrypt_key(rkey, nr_of_bits, &key)生成的;
rkey就是我们输入的原始密钥(10轮AES密钥长度是128).
AES_KEY key这个就是它自己内部使用的轮密钥结构,由原始密钥变换而来.知道了这点,用AES加解密函数就没什么难的了
2011-9-30 10:35
0
雪    币: 319
活跃值: (1086)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=skypismire;1005275]这个我用过,参考下
#define AES_BLOCK_SIZE 16
unsigned char   rkey[16] =
{
        0x20,0x66,0x5F,0x65,0x72,0x72,0x3B,0x0D,0x0A,0x09,0x09,0x09,0x7D,0x0D,0x0A,0x09
};
...[/QUOTE]

plaintext是需要加解密的明文吗?
第2个和第5个参数是什么意思呢?
最后一个参数是常量吧?我这边用的delphi所以没有
aes_encrypt和aes_decrypt的常量值是多少呢?
2011-9-30 12:26
0
雪    币: 75
活跃值: (723)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
AES_cbc_encrypt(plaintext,ciphertext,nr_of_bytes,&key,iv,AES_ENCRYPT);
plaintext:明文
ciphertext:加(解)密后的密文
iv:初始向量,这跟你选择的模式有关,有ecb,cbc,cfb,ofb,ctr模式,你可以看看<<密码学与网络安全>>第八章
AES_ENCRYPT:表明是加密,常量
2011-9-30 13:10
0
雪    币: 319
活跃值: (1086)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
谢谢你,已经解决了。话说这个版块有点冷啊
2011-10-1 10:09
0
游客
登录 | 注册 方可回帖
返回
//