日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于加密程序

發布時間:2025/5/22 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于加密程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發加密程序時,有很多種加密算法可以選擇,blowfish,AES,還有簡單的異或運算啦等等

其實這些都不是關鍵,關鍵點是如何隱藏加密算法的key

如果將key作為明文保存在程序中,很容易在數據段中查看到相應的值

從而失去了加密的意義

?

由此可見,一個關鍵點在于隱藏key字符

使用boost庫的序列化宏,可以簡單的實現隱藏key的功能

代碼如下:

1 #define CRYPT_MACRO(r, d, i, elem) ( elem ^ ( d - i ) ) 2 3 #include <boost/preprocessor/cat.hpp> 4 #include <boost/preprocessor/seq/for_each_i.hpp> 5 #include <boost/preprocessor/seq/enum.hpp> 6 7 #define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ)\ 8 static const char* BOOST_PP_CAT(Get, NAME)()\ 9 {\ 10 static char data[] = {\ 11 BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)),\ 12 '\0'\ 13 };\ 14 \ 15 static bool isEncrypted = true;\ 16 if ( isEncrypted )\ 17 {\ 18 for (unsigned i = 0; i < ( sizeof(data) / sizeof(data[0]) ) - 1; ++i)\ 19 {\ 20 data[i] = CRYPT_MACRO(_, SEED, i, data[i]);\ 21 }\ 22 \ 23 isEncrypted = false;\ 24 }\ 25 \ 26 return data;\ 27 } 28 29 //32116D937A114CF68FBA11E55F4B7150 30 //258795D85B004823B5546DB33E055F0D 31 32 DEFINE_HIDDEN_STRING(EncryptionKey1, 0x7f, ('3')('2')('1')('1')('6')('D')('9')('3')('7')('A')('1')('1')('4')('C')('F')('6')('8')('F')('B')('A')('1')('1')('E')('5')('5')('F')('4')('B')('7')('1')('5')('0')) 33 DEFINE_HIDDEN_STRING(EncryptionKey2, 0x5d, ('2')('5')('8')('7')('9')('5')('D')('8')('5')('B')('0')('0')('4')('8')('2')('3')('B')('5')('5')('4')('6')('D')('B')('3')('3')('E')('0')('5')('5')('F')('0')('D')) 34 35 const char* GetEncodeKey1(void) 36 { 37 return GetEncryptionKey1(); 38 } 39 40 const char* GetEncodeKey2(void) 41 { 42 return GetEncryptionKey2(); 43 }

原始的key是由guid生成器生成,將key序列化打亂之后,在程序的二進制數據,代碼段,數據段都不會找到key的原始數據了

轉載于:https://www.cnblogs.com/jojodru/p/4757729.html

總結

以上是生活随笔為你收集整理的关于加密程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。