⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvigenere.c

📁 简单的vigenere解密及其解密功能实现代码
💻 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 + -