最近在做一個項目,需要使用c語言解析json數(shù)據(jù),然后發(fā)現(xiàn)這個json數(shù)據(jù)被加密過了。于是我花了一段時間研究如何解密這個json。最終,我發(fā)現(xiàn)這是一個變態(tài)加密算法。
// 加密字符串 char* encrypt(char* data) { int length = strlen(data); char* encryptedData = (char*) malloc(sizeof(char) * (length + 1)); for(int i = 0; i< length; i++) { encryptedData[i] = data[i] ^ 123; // 異或操作 } encryptedData[length] = '\0'; // 加上字符串結(jié)束符 return encryptedData; }
以上是加密函數(shù)的代碼。這個函數(shù)很簡單,就是對字符串進行了異或操作,并返回加密后的字符串。以下是解密函數(shù)的代碼。
// 解密字符串 char* decrypt(char* encryptedData) { int length = strlen(encryptedData); char* data = (char*) malloc(sizeof(char) * (length + 1)); for(int i = 0; i< length; i++) { data[i] = encryptedData[i] ^ 123; // 異或操作 } data[length] = '\0'; // 加上字符串結(jié)束符 return data; }
解密函數(shù)與加密函數(shù)的代碼基本相同,只是操作的對象變成了加密后的字符串。
如果要使用這個加密算法,只需要在需要加密的地方調(diào)用encrypt函數(shù),將返回值發(fā)送到服務(wù)器即可。服務(wù)器收到加密后的數(shù)據(jù)后,使用decrypt函數(shù)解密即可。當然,這個算法也有它的缺陷,例如加密后的數(shù)據(jù)可能會被攔截,但這個算法對于一般的數(shù)據(jù)加密已經(jīng)足夠了。
上一篇vue by bi
下一篇html幫助中心代碼