Hashing techniques
将是这里的最佳选择。
您可以使用任何散列算法,如HmacSHA1
orMD5
等。
当您使用Post
or将数据传递到服务器Get
时,首先,使用任何散列算法从数据中创建一个令牌。(请参阅下面将数据转换为 HMAC SHA1 的函数)
当您传递此数据时,将令牌也传递给服务器。现在服务器也将使用与客户端相同的散列算法,服务器将根据请求传递的数据创建令牌。
之后,服务器将生成的令牌与随请求传递的令牌相匹配。
如果两个令牌都匹配,则与请求一起传递的数据不会被篡改,否则数据会被篡改。
您可以使用以下方法为您的数据创建令牌:
/**
* Encrypts the data passed to it using Hmac-SHA1.
*
* @param dataToEncrypt
* data that is to be encrypted.
* @return The token that is generated after encrypting data.
*/
public static String convertDataToHmacSHA1(final String dataToEncrypt) {
String returnString;
try {
// Get an hmac_sha1 key from the raw key bytes
final byte[] keyBytes = HMAC_SHA1_KEY.getBytes();
final SecretKeySpec signingKey = new SecretKeySpec(keyBytes,
"HmacSHA1");
// Get an hmac_sha1 Mac instance and initialize with the signing key
final Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
// Compute the hmac on input data bytes
final byte[] rawHmac = mac.doFinal(dataToEncrypt.getBytes());
final StringBuffer stringBuffer = new StringBuffer();
for (byte b : rawHmac) {
stringBuffer.append(String.format("%02x", b));
}
returnString = stringBuffer.toString();
Log.e("Token", returnString);
return returnString;
} catch (Exception e) {
Log.e(TAG, "" + e);
}
return returnString;
}