BillyYu

Vigenere加密 操练

WIKIPEDIA的链接

#include <stdio.h>
#include 
<cs50.h>
#include 
<stdlib.h>
#include 
<ctype.h>
#include 
<string.h>

int
main(
int argc, char *argv[])    {
    
//check the argument
    if (argc != 2) {
        printf(
"You should input ONE,and ONLY ONE argument.\n");
        
return 1;
    }

    
char *KEY = (char *) malloc(sizeof(char* strlen(argv[1]));
    strcpy(KEY,argv[
1]);

    printf(
"Plain Text:");
    
char *text=GetString();

    
char *tmp=(char *)malloc(sizeof(char* strlen(text));
    memcpy(tmp,text,strlen(text));

    
int KEN_LEN = strlen(KEY);
    
for(int i=0;tmp[i] != '\0';i++)    {
        
static int j = 0;
        
if ( isalpha(tmp[i]) )    {
            
int key = toupper(KEY[j%KEN_LEN]) - 'A';
            
if ( isupper(tmp[i]) ) {
                tmp[i]
=(tmp[i] - 'A' + key)%26 + 'A';
            } 
else  {
                tmp[i]
=(tmp[i] - 'a' + key)%26 + 'a';
            }
            j
++;
        }
    }

    printf(
"Cipher: %s\n", tmp);
    free(KEY);
    free(tmp);
    free(text);
    
return 0;
}


posted on 2011-01-17 23:26 志华 阅读(365) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜