c语言编写DES加密解码器

本文详细介绍了使用DES(数据加密标准)算法进行块加密解密的过程,包括位操作、子密钥应用、S-盒变换和IP变换等步骤。
摘要由CSDN通过智能技术生成

#include "stdio.h"
#include "memory.h"
#include "time.h"
#include "stdlib.h"

int DES_DecryptBlock(ElemType cipherBlock[8], ElemType subKeys[16][48],ElemType plainBlock[8])
{
    ElemType cipherBits[64];
    ElemType copyRight[48];
    int cnt;

    Char8ToBit64(cipherBlock,cipherBits);

    DES_IP_Transform(cipherBits);


    for(cnt = 15; cnt >= 0; cnt--)
    {
        memcpy(copyRight,cipherBits+32,32);

        DES_E_Transform(copyRight);

        DES_XOR(copyRight,subKeys[cnt],48);

        DES_SBOX(copyRight);

        DES_P_Transform(copyRight);

        DES_XOR(cipherBits,copyRight,32);
        if(cnt != 0)
        {
            DES_Swap(cipherBits,cipherBits+32);
        }
    }

    DES_IP_1_Transform(cipherBits);
    Bit64ToChar8(cipherBits,plainBlock);
    return 0;
}

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值