?? dvigenere.c
字號:
#include <stdio.h>#include <string.h>#include <malloc.h>#include "dvigenere.h"#define BASE 26extern char *dvigenere_encrypt( char *p, char *k, int l ){ int i, keylen = strlen(k); char *c; c = (char *) malloc ( sizeof(char)*(strlen(p)+1) ); if( NULL==c ) return (NULL); for( i=0; i<l; i++ ) { if( blowerletter( *(p+i) ) ) *(c+i) = ( *(p+i) - 'a' + getoffset(*(k+(i%keylen))) ) % BASE + 'A'; else if( bpowerletter( *(p+i) ) ) *(c+i) = ( *(p+i) - 'A' + getoffset(*(k+(i%keylen))) ) % BASE + 'a'; else *(c+i) = *(p+i);// printf( "encrypt [ %c ] with key [ %c:%d ] as the resule [ %c ]\n", *(p+i), *(k+(i%keylen)), getoffset(*(k+(i%keylen))), *(c+i) ); } *(c+i) = '\0'; return (c);};extern char *dvigenere_decrypt( char *c, char *k, int l ){ int i, j; char *p; p = (char *) malloc ( sizeof(char)*(strlen(c)+1) ); if( NULL==c ) return (NULL); for( i=0; i<l; i++ ) { if( blowerletter( *(c+i) ) ) *(p+i) = ( *(c+i) - 'a' + BASE - getoffset(*(k+i%(strlen(k)))) ) % BASE + 'A'; else if( bpowerletter( *(c+i) ) ) *(p+i) = ( *(c+i) - 'A' + BASE - getoffset(*(k+i%(strlen(k)))) ) % BASE + 'a'; else *(p+i) = *(c+i); } *(p+i) = '\0'; return (p);};extern int getoffset( char c ){ if( blowerletter(c) ) return (c-'a'); else if( bpowerletter(c) ) return (c-'A'); else return 0;}extern int blowerletter( char c ){ if( c>='a' && c<='z' ) return 1; else return 0;};extern int bpowerletter( char c ){ if( c>='A' && c<='Z' ) return 1; else return 0;};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -