一種數據傳輸加解密的方法與流程
2023-12-02 04:13:06

本發明涉及支付終端技術領域,尤其涉及一種數據傳輸加解密的方法。
背景技術:
網際網路上存在著成百上億的網址,有些是面向大眾公開請求的,還有些則非公開的,公司內部使用的,有些數據十分珍貴,如果被盜取,有可能會影響到公司盈利。
長久以來,人們發明了各種各樣的加密方法,為便於研究,通常把這些方法分為對稱加密方法和非對稱加密方法兩大類。前者的共同特點是採用單鑰技術,即加密和解密過程中使用同一密鑰,所以它也稱為對稱式加密方法;而後者的共同特點是採用雙鑰技術,也就是加密和解密過程中使用兩個不同的密鑰,它也稱為非對稱式加密方法。
技術實現要素:
本發明要解決的技術問題,在於提供一種本發明加密和解密的運算邏輯互成對稱,方便修改邏輯規則;可通過修改加密邏輯規則和密匙的方式,快速有效的阻止數據被盜取。
本發明是這樣實現的:一種數據傳輸加解密的方法,所述方法在代碼內定義一個密匙串,以該密匙串為中心,對數據進行加密、解密操作;
所述加密操作:把密匙串,和要加密的字符串進行進位數編碼,然後通過邏輯運算,最後進行base64編碼得到加密的字符串;
所述解密操作:把密匙串,和要解密的字符串進行進位數編碼,然後通過邏輯運算,最後進行base64解碼得到解密的數據。
進一步的,所述加密操作具體為:
先定義密匙串,拼接時間戳的當天日期格式以及隨機數得到動態密匙,這樣使數據每天加密後的結果都不一樣,增加非法用戶解密難度;再設置一時間配置文件;其次循環遍歷,將要加密的內容和動態密匙中的串一一對應,進行加密,對加密數據轉成十進位數異或運算得到的結果加入運算規則;再者對照ASCII碼對照表獲取對應的字符,對最終的結果進行base_64編碼得到加密的字符串。
進一步的,所述解密操作具體為:
先獲取所述時間配置文件的內容,查詢當天的動態密匙,其次對加密信息base64解碼,循環遍歷,將要加密的內容和動態密匙中的串一一對應,進行解密;對解密數據轉成十進位數異或運算得到的結果加入逆規則運算,再者對照ASCII碼對照表獲取對應的字符,得到最終解密數據。
進一步的,所述加密操作進一步為:定義密匙串$key,拼接時間戳的當天日期格式以及隨機數得到動態密匙,動態密鑰key=$key.time(『m』-』d』).rand(111,999);動態密鑰key作為值存入一時間配置文件config.php,key格式為當天日期;循環對信息進行十進位異或運算以及其他運算規則,$Sum=(ord($data{$i})^ord($char{$i}))+299;對加密結果轉成對應的ASCII信息chr($sum);最後對得到的運算結果base64編碼方便傳輸:Base64_encode(chr($sum))。
進一步的,所述解密操作進一步為:獲取時間配置文件config.php信息,查詢當天日期下的值;得到動態密匙key,對加密的內容進行base64位解碼$data=Base64_encode($data);循環對信息進行十進位異或運算以及其他規則算法的逆向運算$Sum=(ord($data{$i}-299)^ord($char{$i}));加密結果轉成對應的ASCII信息chr($sum),得到最終解密數據。
本發明具有如下優點:1.加密和解密的運算邏輯互成對稱,方便修改加密和解密的邏輯規則。2.要是系統接口規則被外部人員知道後,可通過修改加密邏輯規則和密匙的方式,快速有效的阻止數據被盜取。3.代碼架構,不佔用資源。
附圖說明
圖1為本發明加密的流程示意圖。
圖2為本發明解密的流程示意圖。
具體實施方式
請參閱圖1和圖2所示,本發明的一種數據傳輸加解密的方法,所述方法在代碼內定義一個密匙串,以該密匙串為中心,對數據進行加密、解密操作;
所述加密操作:把密匙串,和要加密的字符串進行進位數編碼,然後通過邏輯運算,最後進行base64編碼得到加密的字符串;
所述解密操作:把密匙串,和要解密的字符串進行進位數編碼,然後通過邏輯運算,最後進行base64解碼得到解密的數據。
其中,所述加密操作具體為:
先定義密匙串,拼接時間戳的當天日期格式以及隨機數得到動態密匙,這樣使數據每天加密後的結果都不一樣,增加非法用戶解密難度;再設置一時間配置文件;其次循環遍歷,將要加密的內容和動態密匙中的串一一對應,進行加密,對加密數據轉成十進位數異或運算得到的結果加入運算規則;再者對照ASCII碼對照表獲取對應的字符,對最終的結果進行base_64編碼得到加密的字符串。
所述解密操作具體為:
先獲取所述時間配置文件的內容,查詢當天的動態密匙,其次對加密信息base64解碼,循環遍歷,將要加密的內容和動態密匙中的串一一對應,進行解密;對解密數據轉成十進位數異或運算得到的結果加入逆規則運算,再者對照ASCII碼對照表獲取對應的字符,得到最終解密數據。
另外,在本發明中,所述加密操作進一步為:定義密匙串$key,$key=6f28fbe9e039a99d3d83908045bc8058;拼接時間戳的當天日期格式以及隨機數得到動態密匙,動態密鑰key=$key.time(『m』-』d』).rand(111,999);動態密鑰key作為值存入一時間配置文件config.php,key格式為當天日期,例如格式:7-21;循環對信息進行十進位異或運算以及其他運算規則,$Sum=(ord($data{$i})^ord($char{$i}))+299;(其中$data數組類型,存儲需要加密的數據,$i代碼數組下標,$char數組類型變量,存儲密匙數據),對加密結果轉成對應的ASCII信息chr($sum);最後對得到的運算結果base64編碼方便傳輸:Base64_encode(chr($sum))。
所述解密操作進一步為:獲取時間配置文件config.php信息,查詢當天日期下的值;例array(
『7-20』=>6f28fbe9e039a99d3d8390804585opik
『7-21』=>6f28fbe9e039a99d3d83908045bc8058
得到動態密匙key,對加密的內容進行base64位解碼$data=Base64_encode($data);循環對信息進行十進位異或運算以及其他規則算法的逆向運算$Sum=(ord($data{$i}-299)^ord($char{$i}));(其中$data數組類型,存儲需要加密的數據,$i代碼數組下標,$char數組類型變量,存儲密匙數據)加密結果轉成對應的ASCII信息chr($sum),得到最終解密數據。
總之,本發明通過一套可加密解密的算法,對數據進行加密傳送,即使對方知道數據接口網址,由於本發明不按規則給該網址傳遞參數也是沒辦法獲取數據的,因此保證了數據的安全性。
以上所述僅為本發明的較佳實施例,凡依本發明申請專利範圍所做的均等變化與修飾,皆應屬本發明的涵蓋範圍。