關於加密程式

2022-07-17 19:54:15 字數 1903 閱讀 6139

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

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

如果將key作為明文儲存在程式中,很容易在資料段中檢視到相應的值

從而失去了加密的意義

由此可見,乙個關鍵點在於隱藏key字元

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

**如下:

1

#define crypt_macro(r, d, i, elem) ( elem ^ ( d - i ) )

23 #include 4 #include 5 #include enum.hpp>67

#define define_hidden_string(name, seed, seq)\

8static

const

char*boost_pp_cat(get, name)()\9;\

14\15static

bool isencrypted = true

;\16

if( isencrypted )\17\

22\23 isencrypted = false

;\24

}\25\26

return

data;\27}

2829

//32116d937a114cf68fba11e55f4b7150

30//

258795d85b004823b5546db33e055f0d

3132 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

35const

char* getencodekey1(void)36

3940

const

char* getencodekey2(void)41

原始的key是由guid生成器生成,將key序列化打亂之後,在程式的二進位制資料,**段,資料段都不會找到key的原始資料了

關於對稱加密

彼此通訊的a b雙方在交換傳遞資料的時候,加密解密用的是同一種演算法,所以必須提前將規則告訴對方,否則就無法解密。優點 演算法公開 計算量小 加密速度快 加密效率高。缺點 秘鑰傳遞安全性得不到保證,且每次使用對稱加密演算法時,a b都需要使用其他人不知道的惟一鑰匙,這會使得通訊雙方所擁有的鑰匙數量呈...

關於sqlite 加密

在移動裝置上,不管是ios還是android大家都喜歡使用sqlite,它體積小功能卻不錯,滿足大家的需求。但是使用過大家都清楚免費版sqlite資料是明文的,如果存放的是使用者敏感資訊,只要取出應用中的資料庫,神馬使用者名稱,密碼都一目了然。那麼你還敢使用手機登入什麼網銀神馬的麼?使用免費版本的沒...

關於對稱加密與非對稱加密

1 保密 這個很容易理解,就比如你寫的日記,不想被父母看到。2 鑑別 認證 這個就比如有個人說他是你爸爸,你如何鑑別他不是你爸爸呢?比如驗血嘛,就是個鑑別認證。3 完整性 完整性也很容易理解,就是資料是否是完整的,沒有被篡改啥的。4 不可否認性 不可否認性就是比如像古代按手印來證明是你已經確認了。這...