1. 程式人生 > >Android:客戶端和伺服器之間傳輸資料加密

Android:客戶端和伺服器之間傳輸資料加密

       Android客戶端與伺服器進行資料傳輸時,一般會涉及到兩類資料的加密情況,一類是隻有建立者才能知道的資料,比如密碼;另一類是其他比較重要的,但是可以逆向解密的資料。

       第一類:密碼類的資料,為了讓使用者放心註冊,密碼類的資料的加密一般都是經過雙重加密的,第一重加密使用不可逆的MD5演算法加密,第二重加密是可逆的加密,常見的可逆加密有對稱加密和非對稱加密。上述不可逆的意思就是一旦加密就不能反向得到密碼原文,一般用來加密使用者密碼,app的伺服器端一般儲存的也都是密文密碼,不然使用者就太危險了,app的運營商也承擔不起這麼大的責任。雖然現在MD5加密生成的密文也可以破解了,但是我們不需要擔心,因為我們可以採用多重加密方式來應對。在資料傳輸的過程中,首先把密碼類資料經過MD5加密演算法加密,然後再在外面使用可逆的加密方式加密一次,這樣在資料傳輸的過程中,即便資料被截獲了,但是想要完全破解,還是很難的(本來就不存在完全不能解密的加密)。

    MD5加密演算法:

  1. public String getMD5Code(String info) {  
  2.     try {  
  3.         MessageDigest md5 = MessageDigest.getInstance("MD5");  
  4.         md5.update(info.getBytes("UTF-8"));  
  5.         byte[] encryption = md5.digest();  
  6.         StringBuffer strBuf = new StringBuffer();  
  7.         for (int i = 
    0; i < encryption.length; i++) {  
  8.             if (Integer.toHexString(0xff & encryption[i]).length() == 1) {  
  9.                 strBuf.append("0").append(  
  10.                         Integer.toHexString(0xff & encryption[i]));  
  11.             } else {  
  12.                 strBuf.append(Integer.toHexString(0xff
     & encryption[i]));  
  13.             }  
  14.         }  
  15.         return strBuf.toString();  
  16.     } catch (Exception e) {  
  17.         // TODO: handle exception
  18.         return"";  
  19.     }  
  20. }  

  第二類資料:非密碼類的資料,雖然這些資料也很重要,但是一般其他人截獲了這些資料對他們意義不太大,這些資料我們一般採用可逆的加密方式加密,因為我們在伺服器端還是需要這些資料的明文的,常用的可逆加密方法有:對稱加密和非對稱加密。何為對稱加密?在對稱加密演算法中,資料發信方將明文和加密金鑰一起經過特殊的加密演算法處理後,使其變成複雜的加密密文傳送出去,收信方收到密文後,若想解讀出原文,則需要使用加密時用的金鑰以及相同加密演算法的逆演算法對密文進行解密,才能使其回覆成可讀明文。在對稱加密演算法中,使用的金鑰只有一個,收發雙方都使用這個金鑰,這就需要解密方事先知道加密金鑰。非對稱加密演算法是一種金鑰的保密方法。非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。 非對稱加密演算法實現機密資訊交換的基本過程是:甲方生成一對金鑰並將其中的一把作為公用金鑰向其它方公開;得到該公用金鑰的乙方使用該金鑰對機密資訊進行加密後再發送給甲方;甲方再用自己儲存的另一把專用金鑰對加密後的資訊進行解密。

相關推薦

Android客戶伺服器之間傳輸資料加密

       Android客戶端與伺服器進行資料傳輸時,一般會涉及到兩類資料的加密情況,一類是隻有建立者才能知道的資料,比如密碼;另一類是其他比較重要的,但是可以逆向解密的資料。        第一類:密碼類的資料,為了讓使用者放心註冊,密碼類的資料的加密一般都是經過

C++利用socket的客戶伺服器之間傳輸檔案

//伺服器的程式碼檔案有 /* message.h source.h source.cpp server.h server.cpp */ //客戶端的程式碼檔案有 /* message.h 和伺服器端一樣 client.h client.cpp */ //message

網路程式設計(InetAddress類、SocketServerSocket、實現客戶伺服器之間的雙向通訊)

網路程式設計的底層是IO,通過IO將一臺計算機中的資料傳送到另一臺計算機中。傳送的時候,要知道接受方的地址,該地址即為IP地址。知道IP地址後即可進行傳送。A向B發訊息,訊息是發過去了,但是B要怎樣接受呢?因此定義了埠,B監聽了A所使用的埠。A發的訊息中含有埠號,當B接受到訊息時,知道了埠號

socket通訊客戶伺服器的簡單實現

什麼是socket? socket最開始的含義是一個地址和埠對(ip, port)。Socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 socket地址API:它唯一的表示了使用tcp通訊的一端,也可以將其理解成socket地址。 socket

公鑰私鑰的含義,以及java客戶伺服器之間進行安全加解密的簡單實現

所謂公鑰和私鑰,一般是指在一個伺服器中,每個伺服器各自有自己的公鑰和私鑰,私鑰絕對保密,不可洩露,而公鑰會提供給可以被訪問的伺服器知曉。 如果serverA和serverB進行資料互動 那麼ServerA會知道B的公鑰 在傳送資料時 資料內容使用B的公鑰加密,傳送給B 數字

C# 利用Socket類實現客戶伺服器之間的通訊,可在本機之間實現資訊互動

利用Socket類實現了本機之間的客戶端與服務端的資訊互動。 伺服器: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using

diy資料庫(八)--客戶伺服器之間的通訊協議

一、什麼是通訊協議 通訊協議是指雙方實體完成通訊或服務所必須遵循的規則和約定。 二、diydb的協議格式 1、協議格式是通訊協議中最重要的部分之一,diydb採用的是自定義格式和BSON格式的混合格式 2、協議格式總覽 協議主要分三個大段 (1)協議頭:包括訊息長度(用

Android:解決客戶伺服器上獲取資料亂碼的方法

向伺服器傳送HTTP請求,接收到的JSON包為response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解碼還是出現了中文亂碼,在後面加了 String name

客戶伺服器之間分別通過TCPUDP進行通訊

一:TCP/IP協議的應用一般採用客戶/伺服器模式,因此在實際應用中,必須有客戶和伺服器兩個程序,並且首先啟動伺服器,其系統呼叫時序圖如下。面向連線的協議(如TCP)的套接字系統呼叫如圖2.1所示: 注意:伺服器必須首先啟動,直到它執行完accept()呼叫,進入等待狀態後

使用TCP協議實現客戶伺服器資料傳輸

/*客戶端和服務端互訪,傳輸位元組流*/ import java.net.*; import java.io.*; class TCPClient2 { public static void main(String[] args) throws Exception

Socket 通訊原理(Android客戶伺服器以TCP&&UDP方式互通)

ZERO、前言 有關通訊原理內容是在網上或百科整理得到,程式碼部分為本人所寫,如果不當,還望指教。 一、Socket通訊簡介  Android與伺服器的通訊方式主要有兩種,一是Http通訊,一是Socket通訊。兩者的最大差異在於,http連線使用的是“請求—響應方式

Android客戶伺服器交換資料的一種方案

由於很多因素使得客戶端和伺服器之間互動的一些資料都要經過加密,為了方便,很多使用非對稱的加密演算法進行加密,其中RSA演算法成為首選。下面說說在Android客戶端怎中怎麼應用這種加密方案。 首先在我們Android客戶端啟動應用程式的時候,我們先請求一個伺服器,讓服務將R

android上傳大檔案到伺服器客戶伺服器程式碼

使用一般的上傳方法一般上傳不能超過2m的檔案,也非常容易中斷和出錯,於是本人打算使用xutils框架進行檔案上傳開發,話不多說直接上原始碼 首先要下載這個類庫的jar包,地址:https://github.com/wyouflf/xUtils android端程式碼: 新增

使用sftp在客戶伺服器之間進行檔案傳輸

知識點:sftp 步驟: 一、 登入伺服器 使用命令格式:sftp 伺服器主機名 二、 在客戶端與伺服器之間進行檔案傳輸 命令put: 上傳到伺服器 put haha.txt 命令get: 下載到客戶端

Android客戶伺服器資料互動的第四種方法

        網上有很多例子來演示Android客戶端和伺服器端資料如何實現互動不過這些例子大多比較繁雜,對於初學者來說這是不利的,現在介紹幾種程式碼簡單、邏輯清晰的互動例子,本篇部落格介紹第四種:         一、伺服器端:         程式碼1:新增名為“A

通過python實現TCP在客戶伺服器上的單(多)執行緒的程式設計

1、只支援一個客戶端訪問 伺服器: from socket import * address='127.0.0.1' #監聽哪些網路 127.0.0.1是監聽本機 0.0.0.0是監聽整個網路 port=12345 #監聽自己的哪個埠 buffsize=

使用scp命令在mac本機linux伺服器之間傳輸資料

命令不復雜: 1、從伺服器下載檔案  scp [email protected]:/path/filename /tmp/local_destination  2、上傳本地檔案到伺服器  scp /path/local_filename [email

關於Hbase客戶regionserver之間的單連線

  2013年02月17日 17:45:27 楊步濤的部落格 閱讀數:4417更多 所屬專欄: 大資料 HBase儲存 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/yangbutao/

java socket客戶伺服器通訊

Socket:網路上兩個程式通過一個雙向的通訊連線實現資料交換,連線的一段為一個socket,要實現兩個程式的資料交換一般要一對socket。 這個定義參考自百度百科,我覺得說的還不錯,另外,socket的英文有‘插口’的意思,其實也可以理解為程式的插口等等。

Oracle客戶伺服器的字符集

--客戶端(當前環境) SELECT * FROM V$NLS_PARAMETERS;--NLS_LANGUAGE::SIMPLIFIED CHINESE --客戶端(當前會話) SELECT USERENV('language') FROM DUAL;--SIMPLIF