/* file name: encrypt.c
* cmd: $gcc encrypt.c
* author: yilonglucky#gmail.com
* description: encrypt a string data with a certain key
*/
#include <stdio.h>
#include <string.h>
#define KEY "yilonglucky"
#define DATA "See you eight p.m. tonight in Central Park!"
#define MAX_LEN 50
char set[26*2+1] = {0};
int init_set(char *str)
{
char *p;
int i;
char mask[26] = {0};
for(p = str,i = 0; *p != '\0'; p++)
{
if(isalpha(*p))
set[i++] = (isupper(*p))? *p : toupper(*p);
else
continue;
}
set[i] = '\0';
strcat(set,"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
/* delete the same character */
for (p = set, i = 0; '\0' != *p; p++, i++)
{
if (mask[*p - 'A'])
{
i--;
}
else
{
mask[*p - 'A'] = 1;
set[i] = *p;
}
}
set[i] = '\0';
return 0;
}
char code(char cin)
{
return isupper(cin)? set[cin-'A'] : tolower(set[cin-'a']);
}
void encrypt(char *pcKey, char *pcData, char *pcEncrypt)
{
char *p;
char i;
/* initialise the code set */
init_set(pcKey);
for(p = pcData, i = 0; '\0' != *p; p++)
{
/* encrypt the data */
pcEncrypt[i++] = (isalpha(*p))? code(*p) : *p;
}
pcEncrypt[i] = '\0';
return ;
}
int main()
{
char *key = KEY;
char *data = DATA;
char encrypted[MAX_LEN];
encrypt(key, data, encrypted);
printf("%s\n", encrypted);
return 0;
}
对一个字符串进行简单加密
最新推荐文章于 2024-04-13 15:52:59 发布