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);