Ⅰ URL內 參數加密解密
javascript對URL中的參數進行簡單加密處理
javascript的api本來就支持Base64,因此我笑笑們可以很方便的來進行編碼和解碼。
var encodeData = window.btoa("name=xiaoming&age=10")//衡升敗編碼
var decodeData = window.atob(encodeData)//解碼。
下面來個具體的例子來說明如何對url中參數進行轉碼,並取得解碼後的參數
假如要跳轉的url = "stu_info.html?name=xiaoming&age=10"
轉碼:url = "stu_info.html?"+window.btoa("name=xiaoming&age=10");
跳轉:window.open(url)或者window.locaton.href = url;
解碼:解碼時我們首先要從url中獲得參數列表,
我們可以通過var paramsString = window.location.search來獲取url中?號開始的內容(url的咐顫查詢部分)即"?name=xiaoming&age=10";
然後去掉?號 paramsString = paramsString.substring(1) //"name=xiaoming&age=10"
去掉& paramsString = paramsString.split("&");//["name=xiaoming","age=10"]
需要指出的是 window.btoa這中編碼方式不能直接作用於Unicode字元串。只能將ascci字元串或二進制數據轉換成Base64編碼過的字元串。如果要對Unicode字元進行編碼可以將做如下轉換。
var encodeData = window.btoa(window.encodeURIComponent("name=小明&age=10"))//編碼
var decodeData = window.decodeURIComponent(window.atob(encodeData))//解碼。
獲取url參數
//獲取url參數
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var params = window.location.search.substr(1);
params = window.decodeURIComponent(window.atob(params));
var r = params.match(reg);
if (r != null) {
return decodeURI(r[2]);
}
return null;
}
Ⅱ 針對url的加密與解密
encodeURIComponent(string)加密,decodeURIComponent(string)解密
city: encodeURIComponent(`'${this.cityVal}'`)//this.cityVal為要加密的中文
let href = util.getUrlParam('city')
console.log('解析url地址1=====',href)
console.log('解析url地址2=====',decodeURIComponent(href))
console.log('解析url地址2=====',decodeURIComponent(decodeURIComponent(href)))//需解析兩層
Ⅲ 如何設置url加密
你好,url加密可用java.net.URLEncoder.encode{Base64編碼(加密字串),StringCode}這樣的方法來對url中的參數進行加密。
我們來說下如何加密
一、演算法的選擇:
對於像對url中的參數進行加密的過程,我不建議使用rea或者是二重des這樣的加密演算法,主要原因在於性能速度會受影響。建議使用對稱加密如:DES或者是PES演算法。
二、加密原理
對於一個純文本,加密後它會變成一堆亂碼,這堆亂碼包括了許多非法字元,不希望把這些字元放入bean中,因此加密完後,還要對加密結果進行besa64編碼。
加密過程:輸入口令{KEY}-->加密文本-->以besa64對加密後的結果進行編碼-->以java.net.URLEncoder.encode編碼成瀏覽器可以識別的形式-->傳輸給接受的action
Ⅳ android 的幾種加密方式
Android 中的最常用得到有三種加密方式:MD5,AES,RSA.
1.MD5
MD5本質是一種散列函數,用以提供消息的完整性保護。
特點:
1.壓縮性:任意長度的數據,算出的MD5值長度都是固定的;
2.容易計算:從原數據計算出MD5值很容易;
3.抗修改性:對原數據進行任何改動,哪怕只修改一個位元組,所得到的MD5值都有很大的區別
4.強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(及偽造數據)是非常困難的;
2.RSA加密
RSA加密演算法是一種非對稱加密演算法,非對稱加密演算法需要兩個密鑰:公共密鑰和私有密鑰。公鑰和私鑰是配對的,用公鑰加密的數據只有配對的私鑰才能解密。
RSA對加密數據的長度有限制,一般為密鑰的長度值-11,要加密較長的數據,可以採用數據截取的方法,分段加密。
3.AES加密
AES加密是一種高級加密的標准,是一種區塊加密標准。它是一個對稱密碼,就是說加密和解密用相同的密鑰。WPA/WPA2經常用的加密方式就是AES加密演算法。
Ⅳ android 介面數據如何加密
方法步驟如下:
1.選擇要發布的項目,右鍵如下:
7.點擊Finish完成發布,在相應的位置生成兩個文件為:
XX.apk和步驟4所起的文件名。
Ⅵ Android APP加密方法都有哪些
1 偽加密是Android4.2.x系統發布前的Android加密方式之一,通過java代碼對APK(壓縮文件)進行偽加密,其修改原理是修改連續4位位元組標記為」P K 01 02」的後第5位位元組,奇數表示不加密偶數表示加密。
2 混淆保護
把原來有具體含義的類名,變數名,方法名,修改成讓人看不懂的名字,例如方法名getUserName編程了方法名。
混淆保護只是增加了代碼閱讀難度,對於破解基本上是沒有實質性作用的
運行時驗證,主要是指在代碼啟動的時候本地獲取簽名信息然後對簽名信息進行檢驗來判斷自己的應用是否是正版,如果簽名信息不是正版則提示盜版或者直接崩潰。當然你可以把必要的數據放在伺服器端。Android APP加密方法都有哪些?破解:找到smali文件中,判斷是否相等的部分。改為常量true,即失效。
總之,反編譯一些apk之後,只要是java代碼寫的總會有smil文件。對於smil文件,如果耐心讀的話,還是可以查看到一些關鍵代碼的。
相較於應用來說,游戲apk因為採用cocos2d-x或者 unity3D,採用的是c++和c# 編寫的跨平台程序,在apk採用JNI的方式。所以沒有smali,可以防止靜態被破解apk包。
當然游戲包apk在運行的時候,會把.*so載入到內存中。動態也是可以在內存中抓取相應的數據。只不過NDK相對於smali破解來說,根部不是一個層級的關系。
3 使用第三方Android加密平台
Ⅶ Android加密演算法總結
1.概念:
Base64是一種用64個字元(+/)來表示二進制數據的方法,只是一種編碼方式,所以不建議使用Base64來進行加密數據。
2.由來:
為什麼會有Base64編碼呢?因為計算機中數據是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字元。在網路上交換數據時,比如圖片二進制流的每個位元組不可能全部都是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情況下,做一種擴展方案來支持二進制文件的傳送,把不可列印的字元也能用可列印字元來表示,所以就先把數據先做一個Base64編碼,統統變成可見字元,降低錯誤率。
3.示例:
加密和解密用到的密鑰是相同的,這種加密方式加密速度非常快,適合經常發送數據的場合。缺點是密鑰的傳輸比較麻煩。
1.DES
DES全稱為Data Encryption Standard,即數據加密標准,是一種使用 密鑰加密 的塊演算法。
DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1)分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。
2.3DES
3DES(或稱為Triple DES)是三重 數據加密演算法 (TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。是DES向AES過渡的加密演算法,它使用3條56位的密鑰對數據進行三次加密。是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密演算法。比起最初的DES,3DES更為安全。
3.AES
AES全稱Advanced Encryption Standard,即高級加密標准,當今最流行的對稱加密演算法之一,是DES的替代者。支持三種長度的密鑰:128位,192位,256位。
AES演算法是把明文拆分成一個個獨立的明文塊,每一個明文塊長128bit。這些明文塊經過AES加密器的復雜處理,生成一個個獨立的密文塊,這些密文塊拼接在一起,就是最終的AES加密結果。
但是這里涉及到一個問題:假如一段明文長度是192bit,如果按每128bit一個明文塊來拆分的話,第二個明文塊只有64bit,不足128bit。這時候怎麼辦呢?就需要對明文塊進行填充(Padding):
AES的工作模式,體現在把明文塊加密成密文塊的處理過程中。
加密和解密用的密鑰是不同的,這種加密方式是用數學上的難解問題構造的,通常加密解密的速度比較慢,適合偶爾發送數據的場合。優點是密鑰傳輸方便。
1.SHA
安全散列演算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列演算法。能計算出一個數字消息所對應到的,長度固定的字元串(又稱消息摘要)的演算法,且若輸入的消息不同,它們對應到不同字元串的機率很高。
SHA分為SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512五種演算法,後四者有時並稱為SHA-2。SHA-1在許多安全協定中廣為使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視為是MD5(更早之前被廣為使用的雜湊函數)的後繼者。但SHA-1的安全性如今被密碼學家嚴重質疑;雖然至今尚未出現對SHA-2有效的攻擊,它的演算法跟SHA-1基本上仍然相似;因此有些人開始發展其他替代的雜湊演算法。
2.RSA
RSA演算法1978年出現,是第一個既能用於數據加密也能用於數字簽名的演算法,易於理解和操作。
RSA基於一個數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰,即公鑰,而兩個大素數組合成私鑰。公鑰是可提供給任何人使用,私鑰則為自己所有,供解密之用。
3.MD5
MD5信息摘要演算法 (英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值,用於確保信息傳輸完整一致。具有如下優點:
XOR:異或加密,既將某個字元或者數值 x 與一個數值 m 進行異或運算得到 y ,則再用 y 與 m 進行異或運算就可還原為 x。
使用場景:
(1)兩個變數的互換(不藉助第三個變數);
(2)數據的簡單加密解密。
Ⅷ Android網路請求加密機制
密碼學的三大作用:加密( Encryption)、認證(Authentication),鑒定(Identification)
加密 :防止壞人獲取你的數據。
鑒權 :防止壞人假冒你的身份。
認證 :防止壞人修改了你的數據而你卻並沒有發現。
1. URLEncode和URLDecoder 作用:URLEncode就是將URL中特殊部分進行編碼。URLDecoder就是對特殊部分進行解碼。
為什麼URL要encode原因呢?
url轉義其實也只是為了符合url的規范而已。因為在標準的url規范中 中文和很多的字元 是不允許出現在url中的。
2. Base64編碼
為什麼要進行Base64編碼?
在計算機中任何數據都是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字元。而在網路上交換數據時,比如攔薯枝說從A地傳到B地,往往要經過多個路由設備,由於手腔不同的設備對字元的處理方式有一些不同,這樣那些不可見字元就有可能被處理錯誤,這是不利於傳輸的。所以簡敏就先把數據先做一個Base64編碼,統統變成可見字元,這樣出錯的可能性就大降低了。
應用場景:主要是對於二進制數據進行編碼,(文件、圖片、加密後的二進制數據)
3. 消息認證演算法
要確保加密的消息不是別人偽造的,需要提供一個消息認證碼(MAC,Message authentication code) 。
消息認證碼是帶密鑰的hash函數,基於密鑰和hash函數(單向散列函數)。
密鑰雙方事先約定,不能讓第三方知道。
消息發送者使用MAC演算法計算出消息的MAC值,追加到消息後面一起發送給接收者。
接收者收到消息後,用相同的MAC演算法計算接收到消息MAC值,並與接收到的MAC值對比是否一樣。
消息認證碼的作用:檢查某段消息的完整性,以及作身份驗證。
防止重放 攻擊可以有 3 種方法:
序號
每條消息都增加一個遞增的序號,並且在計算 MAC 值的時候把序號也包含在消息中。這樣攻擊者如果不破解消息認證碼就無法計算出正確的 MAC 值。這個方法的弊端是每條消息都需要多記錄最後一個消息的序號。
時間戳
發送消息的時候包含當前時間,如果收到的時間與當前的不符,即便 MAC 值正確也認為是錯誤消息直接丟棄。這樣也可以防禦重放攻擊。這個方法的弊端是,發送方和接收方的時鍾必須一致,考慮到消息的延遲,所以需要在時間上留下一定的緩沖餘地。這個緩沖之間還是會造成重放攻擊的可趁之機。
nonce
在通信之前,接收者先向發送者發送一個一次性的隨機數 nonce。發送者在消息中包含這個 nonce 並計算 MAC 值。由於每次 nonce 都會變化,因此無法進行重放攻擊。這個方法的缺點會導致通信的數據量增加。
4. 對稱加密演算法
特點:加解密只有一個密鑰。優點:速度快、效率高。缺點:密鑰交換問題。演算法:AES(256位元組,主流)、DES(8位元組,淘汰)。
密鑰交換問題如何解決,MAC同樣也有這個問題,可以使用非對稱加密傳輸,或者私下約定,密鑰管理中心。
5. 非對稱加密
非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密(這個過程可以做數字簽名) 。 非對稱加密主要使用的是RSA演算法。
特點:公/私鑰機制。優點:只需要交換公鑰,安全。缺點:加解密速度慢,特別是解密。演算法:RSA。應用:數字簽名。
數字簽名 :
簡單解釋:
A:將明文進行摘要運算後得到摘要(消息完整性),再將摘要用A的私鑰加密(身份認證),得到數字簽名,將密文和數字簽名一塊發給B。
B:收到A的消息後,先將密文用自己的私鑰解密,得到明文。將數字簽名用A的公鑰進行解密後,得到正確的摘要(解密成功說明A的身份被認證了)。
數字證書 :
6. Android端 AES+RSA結合實踐
基本流程
Android端
伺服器端
基本上如下圖所示的流程:
Ⅸ url參數加密
加密URL參數
插件在訪問 Web 程序時,可以使用 Get 方法或 Post 方法提交數據,無論是哪種方法,按照 HTTP 協議的規范,參數總是按照以下格式提交(每對參數名/參數值以「&」號分隔):
參數名1=參數值1&參數名2=參數值2&參數名3=參數值3...
如果您沒有使用SSL,所有的參數名和參數值都將以明文的形式通過網路傳輸到 Web 伺服器,顯然這種方式是很不安全的,為了保證插件與Web 程序的通訊安全,插件在提交參數前可以對每個參數值使用 Rijndael 加密演算法進行加密處理,並使用 Base64 編碼轉換為可讀字元串形式。
Rijndael 加密演算法是一種高效的對稱加密演算法,它是 AES(Advanced Encryption Standard,高級加密演算法標准)的實現,在加密和解密時有兩個基本參數:初始向量和密鑰,Web程序在進行解密時必須使用和插件端設置相同的初始向量和密鑰。
下面分別列出了加密和不加密的例子各一個:
a. 不加密:Username=test&Password=123456&ClientIP=192.168.0.200&CurrentTime=2005-07-06+23%3a51%3a29
b. 加密:Username=ZtlBwgvwkS5YV98N9cgO%2fw%3d%3d&Password=vBSchK4dJX7Z2zfUatu9ZQ%3d%3d&CurrentTime=mpNifqRIvBV2xZi3d%2fPli6%2bZwR9BKHs4y6t%2bNS2QIr4%3d
在 Web 程序端必須使用相同的演算法來解密各個參數值,具體如何實現取決與您所使用的 Web 程序語言,這就需要您找到特定語言的演算法實現。解密一個參數值的過程包括下面三個步驟:
1. 使用 Base64 演算法將參數值轉換為位元組數組;
2. 使用 Rijndael 演算法將 1 中得到的位元組數組解密得到另一位元組數組;
3. 將 2 中得到位元組數組用特定的字元集轉換成字元串,即得到原始的數據。
插件安裝目錄下的「GVODClassLib.dll」文件包含了加密和解密的演算法實現類 CryptoUtility,它的 Decrypt 方法可以直接將 Base64 編碼後的密文解密為原文字元串,如果您的 Web 程序使用的是 asp.net 編寫的,可以將該文件拷貝到您 Web 站點的「/bin」目錄下,然後按照下面的例子完成解密:
<%@ page language="C#" %>
<%@ import namespace="Com.GVOD" %>
<%
//定義密鑰,請改成你加密時使用的密鑰
string key = "OEtxF/yyALd2NflVW4KSMspQIozPkSRL+mEdvlBAzUQ=";
//定義初始向量,請改成你加密時使用的初始向量
string iv = "Cz3EXGTEMeIN8PXKFLiZWg==";
//定義密鑰長度,請改成你加密時使用的密鑰的長度
int keyLength = 256;
//生成 CryptoUtility 類的實例
CryptoUtility util = new CryptoUtility(key, iv, keyLength);
//解密用戶名
string username = util.Decrypt(Request["Username"]);
//解密密碼
string password = util.Decrypt(Request["Password"]);
//解密其它參數
...
%>
Ⅹ 求安卓加密,安卓應用加密方式
android是用java語言開發的,java語言,JDK給我們提供了非常多的加密演算法
如基本的單向加密演算法:
BASE64 嚴格地說,屬於編碼格式,而非加密演算法
MD5(Message Digest algorithm 5,信息摘要演算法)
SHA(Secure Hash Algorithm,安全散列演算法)
HMAC(Hash Message Authentication Code,散列消息鑒別碼)
復雜的對稱加密(DES、PBE)、非對稱加密演算法:
DES(Data Encryption Standard,數據加密演算法)
PBE(Password-based encryption,基於密碼驗證)
RSA(演算法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)DH(Diffie-Hellman演算法,密鑰一致協議)
DSA(Digital Signature Algorithm,數字簽名)
ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)
以下就是講解BASE64、MD5、SHA、HMAC幾種方法
MD5、SHA、HMAC這三種加密演算法,可謂是非可逆加密,就是不可解密的加密方法。我們通常只把他們作為加密的基礎。單純的以上三種的加密並不可靠。
一. BASE64
按 照RFC2045的定義,Base64被定義為:Base64內容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識別的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常見於郵件、http加密,截取http信息,你就會發現登錄操作的用戶名、密碼欄位通過BASE64加密的。
二. MD5
MD5 -- message-digest algorithm 5 (信息-摘要演算法)縮寫,廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD5後都能生成唯一的MD5值。好比現在的ISO校驗,都 是MD5校驗。怎麼用?當然是把ISO經過MD5後產生MD5的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD5的串。就是用來驗證文 件是否一致的。
三. SHA
SHA(Secure Hash Algorithm,安全散列演算法),數字簽名等密碼學應用中重要的工具,被廣泛地應用於電子商務等信息安全領域。雖然,SHA與MD5通過碰撞法都被破解了, 但是SHA仍然是公認的安全加密演算法,較之MD5更為安全。
四. HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個 標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證 等。