用C语言实现凯撒密码算法

标签: , , , ,

昨天完成了VBS的凯撒密码算法,然后发现Google出来的C语言的凯撒密码算法乱七八糟,很多都是复制粘贴的,还不注明转载地址,连最先的出处都找不到。唉,天下文章一大抄。很多时候,碰到问题Google出来的都是千篇一律的答案,千篇一律也就罢了,还都是没有用的,真受不了。什么?百度一下?百度一下更加什么都不知道!

原来以为C语言的很好写,想不到写了一个小时才写完(不要鄙视我,我承认我是菜鸟),太久没写程序,卡在指针上面了。以下是我写的凯撒密码的C语言算法。你要Java的?对不起,我是一个守旧的人,我不喜欢Java。但是原理都一样吧,不记得在哪里看过一个话,语言并不重要,重要的是算法,语言是会过时的,但是算法不会。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *caesar(const char *str,int offset)
{
	char *start,*ret_str;
	start = ret_str = (char *) malloc(strlen(str) + 1);
	for(;*str!='\0';str++,ret_str++)
	{
		if(*str>='A' && *str<='Z')
			*ret_str = 'A' + (*str - 'A' + offset) % 26;
		else if(*str>='a' && *str<='z')
			*ret_str = 'a' + (*str - 'a' + offset) % 26;
		else
			*ret_str = *str;
	}
	*ret_str = '\0';
	return (char *) start;
}

int main(void)
{
	printf("%s\n","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
	printf("%s\n",caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3));
	return 0;
}

随机文章:

  1. WordPress中的__()和_e()函数的作用
  2. MySQL字符集与排序方式
  3. VBS过程和函数参数传递的方式默认是ByVal还是ByRef?
  4. 用JavaScript实现Bencode算法
  5. Windows下编译支持IPv6的Apache

7 条评论 发表在“用C语言实现凯撒密码算法”上

  1. sp42说道:

    楼主已经很强的了,俺连C语言都不会……

  2. 游客说道:

    为什么不释放内存呢?

  3. 比尔盖子说道:

    有一处严重错误,当key为负值的时候,程序会胡乱的输出一堆ASCII字符的。

  4. […] 关于恺撒密码的算法及实现,网上一搜一大堆,但有些代码是有问题的。比如这个:http://demon.tw/programming/c-caesar.html。当偏移量为负时,我们很欣喜地看到了乱码。 […]

  5. […] 关于恺撒密码的算法及实现,网上一搜一大堆,但有些代码是有问题的。比如这个:http://demon.tw/programming/c-caesar.html。当偏移量为负时,我们很欣喜地看到了乱码。 […]

留下回复