密码库LibTomCrypt学习记录——(2.22)分组密码算法的工作模式——F8代码示例

本文展示了一个使用F8模式的AES加密算法测试案例。测试使用了特定的密钥、盐值、初始化向量(IV)、明文和预期的密文进行。通过比较加密后的输出与预期密文来验证加密过程的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//#include <Windows.h>
#include "tomcrypt.h"
#include "TestMode.h"  
 
int Test_F8_AES(void)

    static const unsigned char key[16] = { 
        0x23, 0x48, 0x29, 0x00, 0x84, 0x67, 0xbe, 0x18, 
        0x6c, 0x3d, 0xe1, 0x4a, 0xae, 0x72, 0xd6, 0x2c };
    static const unsigned char salt[4] = { 
        0x32, 0xf2, 0x87, 0x0d };
    static const unsigned char IV[16]  = { 
        0x00, 0x6e, 0x5c, 0xba, 0x50, 0x68, 0x1d, 0xe5, 
        0x5c, 0x62, 0x15, 0x99, 0xd4, 0x62, 0x56, 0x4a };
    static const unsigned char pt[39]  = { 
        0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x72, 0x61, 
        0x6e, 0x64, 0x6f, 0x6d, 0x6e, 0x65, 0x73, 0x73,
        0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
        0x6e, 0x65, 0x78, 0x74, 0x20, 0x62, 0x65, 0x73,
        0x74, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67       };
    static const unsigned char ct[39]  = { 
        0x01, 0x9c, 0xe7, 0xa2, 0x6e, 0x78, 0x54, 0x01, 
        0x4a, 0x63, 0x66, 0xaa, 0x95, 0xd4, 0xee, 0xfd,
        0x1a, 0xd4, 0x17, 0x2a, 0x14, 0xf9, 0xfa, 0xf4, 
        0x55, 0xb7, 0xf1, 0xd4, 0xb6, 0x2b, 0xd0, 0x8f,
        0x56, 0x2c, 0x0e, 0xef, 0x7c, 0x48, 0x02       };
    unsigned char buf[39];
    symmetric_F8  f8;
    int           err, idx;

    if ( idx = register_cipher (&aes_desc) != CRYPT_OK ) { return CRYPT_INVALID_CIPHER; }
    if ( ( idx = find_cipher("aes") ) == -1) {return CRYPT_NOP;}      

    printf("Start Test F8! \n\n" );    

    /* initialize the context */
    if ((err = f8_start(idx, IV, key, sizeof(key), salt, sizeof(salt), 0, &f8)) != CRYPT_OK) { return err;}
    
    /* encrypt block */
    if ((err = f8_encrypt(pt, buf, sizeof(pt), &f8)) != CRYPT_OK) {return err;}

    f8_done(&f8);    

    printf("Test Vector %s! \nFinish F8 Test Mode! \n\n", 
        XMEMCMP(buf, ct, sizeof(ct)) ? "err" : "ok"/* compare */);

    system("pause");
    
    return CRYPT_OK;
 
}   
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值