Android 提供了一些内置的加密功能,最常见的是使用 `Cipher` 类进行加密和操作。下面是一个简单的示例,演示如何使用 Android 的加密 API 来实现对数据的加密和。
使用 Android 内置的加密功能(`Cipher` 类):
1. 添加依赖:
如果你使用的是 Android 6.0(API 级别 23)及以上版本,可以使用 Android 的 `KeyStore` 和 `Cipher` 类。确保你的项目中没有遗漏必要的权限和依赖。
2. 生成密钥:
为了确保安全性,Android 推荐使用 `KeyStore` 来生成和存储加密密钥。以下是如何生成和获取加密密钥的代码:
```java
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
// 创建一个加密密钥生成器
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
keyGenerator.init(
new KeyGenParameterSpec.Builder("myKeyAlias",
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.build());
keyGenerator.generateKey();
```
3. 加密数据:
使用上面生成的密钥来加密数据:
```java
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// 数据加密
byte[] iv = cipher.getIV();
byte[] encryption = cipher.doFinal(dataToEncrypt.getBytes(StandardCharsets.UTF_8));
// 可以保存 IV 和密文,以便后续
```
4. 数据:
时,必须提供原始的 `IV` 和加密后的密文。以下是过程:
```java
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
GCMParameterSpec spec = new GCMParameterSpec(128, iv); // IV 是之前加密时的值
cipher.init(Cipher.DECRYPT_MODE, secretKey, spec);
// 数据
byte[] decryptedData = cipher.doFinal(encryption);
String decryptedString = new String(decryptedData, StandardCharsets.UTF_8);
```
小结:
- 使用 `KeyStore` 来生成和存储密钥。
- 使用 `Cipher` 类来执行加密和。
- 加密和的算法可以选择 `AES/GCM/NoPadding` 或其他加密算法。
需要注意的是,这些加密操作应该谨慎处理密钥和加密数据。尤其是密钥的存储,要确保它们不会泄露。
如果你的应用要求更高的安全性,可以考虑使用 Android 的 `BiometricPrompt` 来结合生物识别(如指纹)进行加密操作。