对一个字符串进行简单加密

/* 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;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yilonglucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值