程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 如何給隨機數加密

如何給隨機數加密

編輯:C語言基礎知識
代碼如下:

// 隨機數加密算法  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;
 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved