今天花了一两个小时写这个程序,忍不住把她发到自己的博客上与人分享分享,算是作为整理一下自己的思路。如果认为写得太菜的话请各位高手见谅见谅。
这里演示了我自己用libtomcrypt-0.96加密库写的一个DES加密小程序,此DES程序只在Ubuntu10.10 (Linux 2.6.35-28-generic #49-Ubuntu SMP Tue Mar 1 14:40:58 UTC 2011) 测试过,程序是用标准C写的,如果没有意外发生的话应该可以用支持标准C的编译器编译通过。个人懒得把全部文件放上,也免得只是一个简单的程序搞得复杂,只把我的设计思路放上就好了。我想代码就是最好的说明了。
PS: 记得如果你发现BUG的话记得告知一声, 此程序还没有经过完整测试, 只测试了对ASCII码和二进制文件的输入, 所以我假设为可以对所有文件加密.
用户接口, README 文件上的Usage
INSTALL Linux: $ make mydes Windows: Create a project name 'mydes' and include mydes.c mydes_lib.*, and G__des.h des.h file in libtomcrypt-0.96 Usage $ ./mydes -[k|e|d] # generate des key $ ./mydes -k < .key > .key.des #! ./mydes -k abcdabcd > .key.des # Cause interface is not alignment # encrypt plaintext, ASCII or Binary file $ ./mydes -e < mesg > mesg.des # decrypt ciphertext, ASCII or Binary file $ ./mydes -d < mesg.des > mesg ./od # convert mesg/mesg.des to char|O|HEX $ ./od -[c|o|x] # e.g. $ ./od -x < mesg.des > mesg.des.hexMakefile
EXE = test_des mydes od CC = gcc #CFLAGS = -g -Wall -ansi INCLUDE = -I. all: $(EXE) # mydes mydes: mydes.o mydes_lib.o G__des.o $(CC) -o $@ $^ mydes.o: mydes.c $(CC) $(INCLUDE) $(CFLAGS) -c $< mydes_lib.o: mydes_lib.c mydes_lib.h $(CC) $(INCLUDE) $(CFLAGS) -c $< # od od: od.c $(CC) $(INCLUDE) $(CFLAGS) $< -o $@ # test_des G__des.o: G__des.c des.h $(CC) $(INCLUDE) $(CFLAGS) -c $< test_des.o: test_des.c $(CC) $(INCLUDE) $(CFLAGS) -c $< test_des: test_des.o G__des.o $(CC) -o $@ $^ test: ./mydes -k < .key > .key.des # generate key ./mydes -e < mesg > mesg.des # encrypt plaintext ./mydes -d < mesg.des > mesg # decrypt ciphertext clean: rm -f *.o *.obj reclean: clean rm -f $(EXE)