实现字符串加密操作源码

来源:互联网 发布:mac地址是什么 编辑:程序博客网 时间:2024/06/13 08:43

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