我必须通过HTTP安全地将Android设备中的txt文件发送到Apache PHP Web服务器。我想知道可以实现的最佳方法。
txt文件可能非常大,最高可达20Mb,但在大多数情况下,它会小于1Mb。我不确定哪种HTTP方法适合,我正在考虑POST。
安全我的意思是如果请求被拦截,任何人(甚至文件的发件人)都不应该读取txt文件的内容。我正在考虑使用在每个Android设备上生成的唯一密钥加密(我不知道如何)。
我想了解实现这一目标的替代方案和更好的方法。
答案 0 :(得分:1)
在项目中使用此加密文件
public class SEncryption {
private static final String ALGO = "AES";
private static final byte[] keyValue = new byte[] { 'O', 'u', 'r', 'B',
'e', 's', 't','S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y' };
public static String encrypt(String Data) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
Base64 ob=new Base64();
String encryptedValue = Base64.encodeBytes(encVal);
return encryptedValue;
}
public static String decrypt(String encryptedData) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = Base64.decode(encryptedData);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
}
private static Key generateKey() throws Exception {
Key key = new SecretKeySpec(keyValue, ALGO);
return key;
}
public static void main(String[] args) throws Exception {
String password = "346333";
String passwordEnc = encrypt(password);
String passwordDec = decrypt(passwordEnc);
System.out.println("Plain Text : " + password);
System.out.println("Encrypted Text : " + passwordEnc);
System.out.println("Decrypted Text : " + passwordDec);
}
}
用于加密文本
SEncryption s=new SEncryption();
String encryptedtext=s.encrypt("the text");
答案 1 :(得分:0)
使用互联网上提供的一些免费加密算法来加密文本文件,并使用唯一的安卓代码作为密钥。现在使用唯一代码(密钥)将文件发送到服务器并在那里解密。
一种简单的加密算法:http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm