Etual
全部博文(99)
2012年(3)
2011年(5)
2010年(4)
2009年(31)
2008年(56)
arrvin
wanjin3
道痞
songtao0
晓风凌殇
uijm
cynthia
czllong1
yehuiliu
zhouzhua
lelee007
OsAtNbZS
鹏怜鸿影
分类: LINUX
2011-03-14 22:43:54
// 随机数加密算法,原理很简单 A^B = C , A^C =B , B^C = A // Etual 2011-3-14
#include <stdio.h> // 7byte 数据 和 1byte key unsigned char code_buf[8] = {0x12,0x13,0x14,0x15,0x21,0x22,0x23,0x00}; void print_buf(void) { int i; for (i=0;i<8;i++) { printf("%x,",code_buf[i]); } printf("\n"); } int main(void) { unsigned char key,new_key; unsigned char rand_digi; int i; printf("original buf is!\n"); print_buf(); // key 是一个私钥,两个通讯之间各自拥有 key = 0x55; // rand_digi 是一个随机数 rand_digi = 0xe3; // 用私钥对随机数加密得到密文作为新的key使用 new_key = key ^ rand_digi; // 用这个新的key对数据进行加密 for (i=0;i<7;i++) { code_buf[i] ^= new_key; } // 这个key伴随着数据一起传送出去 code_buf[7] = new_key; printf("encrypted buf is!\n"); print_buf(); // 假设接收端正确接收到这个已经加密了的8字节数据 printf("now decode:\n"); // 因为最后一个字节是key,用这个对前面的数据进行解密 for (i=0;i<7;i++) { code_buf[i] ^= code_buf[7]; } // 最后一个本身也是加密了的,用私钥进行还原可以得到随机数 code_buf[7] ^= key; print_buf(); return 0; }
上一篇:ubuntu 下源码编译安装 insight
下一篇:闲聊~~
chinaunix网友2011-03-27 15:35:52
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com
登录 注册