实现字符串加密操作源码

source.c

------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "source.h"

/***************************************/
功能:去掉密钥字符串中重复的字符
输入参数:
const char * uiSrcChr 密钥
输出参数:
 
返回值:
char szSrcChr[100];  处理后的密钥
/**************************************/


char * DelRepChr(const char * uiSrcChr)
{
    int iLoop = 0;
    int jLoop = 0;
    int mValue = 0;
    int mStrLen = 0;
    char szSrcChr[100] = {0};


    mStrLen = strlen(uiSrcChr);
    strncpy(szSrcChr, uiSrcChr, strlen(uiSrcChr));
    for (iLoop; iLoop < mStrLen; iLoop++)
    {
        for(jLoop = iLoop + 1; jLoop < mStrLen; jLoop++)
        {
            if((szSrcChr[iLoop] == szSrcChr[jLoop]) || (szSrcChr[iLoop] + 32 == szSrcChr[jLoop]) || (szSrcChr[iLoop] == szSrcChr[jLoop] + 32))
            {
                for(mValue = jLoop; mValue < mStrLen; mValue++)
                {
                    szSrcChr[mValue] = szSrcChr[mValue + 1];
                }
                mStrLen--;
            }
        }
    }
    return szSrcChr;
}


/**********************************/
功能:根据密匙对明文进行加密
输入参数:
         char * key:密匙
         char * data:明文
输出参数:
         char * encrypt:密文
返回值:
        void
/**********************************/


void encrypt(char * pcKey, char * pcData, char * pcEncrypt)
{
    /*在这里实现功能*/


    int iLoop         = 0;
    int jLoop         = 0;
    int mDataLen       = 0;
    char szEncrypt[100] = {0};
    char szSrcStr[]    = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char szDstStr[100] = {0};
    char szKey[100]    = {0};


    if (NULL == pcData && NULL == *pcData)
    {
        return ;
    }
    strncpy(szEncrypt, pcKey, sizeof(pcKey));
    strcpy(szKey, DelRepChr(pcKey));
    sprintf(szKey, "%s%s", szKey,szSrcStr);
    strcpy(szDstStr, DelRepChr(szKey));
    mDataLen = strlen(pcData);
    memset(szEncrypt, 0, sizeof(szEncrypt));
    strncpy(szEncrypt, pcData, mDataLen);
    for (iLoop; iLoop < mDataLen; iLoop++)
    {
        jLoop = 0;
        for (jLoop; jLoop < strlen(szSrcStr); jLoop++)
        {
            if (szEncrypt[iLoop] == szSrcStr[jLoop])
            {
                szEncrypt[iLoop] = szDstStr[jLoop];
                break;
            }
            else
            {
                if (szEncrypt[iLoop] == szSrcStr[jLoop] + 32)
                {
                    szEncrypt[iLoop] = szDstStr[jLoop] + 32; 
                    break;
                }
                else
                    continue;
            }
        }
    }
    sprintf(pcEncrypt, "%s", szEncrypt);

}


main.c

-----------------------------

 char  acEncrypt[100] = {0};
 encrypt("TRAILBLAZERS", "Attack AT DAWN", acEncrypt);

 printf("The result is acEncrypt = %s\n", acEncrypt);

CPPUNIT_ASSERT(strcmp(acEncrypt, "Tpptad TP ITVH") == 0);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值