求一个HarmonyOS相关的加解密 demo?
在HarmonyOS中实现加解密功能,你可以使用Java或Kotlin(取决于你的应用是否使用Java或Kotlin作为开发语言)来利用现有的加密库,如Java Cryptography Extension (JCE) 提供的加密服务。以下是一个简单的示例,展示了如何在HarmonyOS应用中使用AES加密和解密字符串。
对于HarmonyOS应用,通常不需要额外引入加密库,因为Java的加密功能已经内置在JDK中。
这里是一个简单的AES加密和解密的示例代码:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
public class AESEncryptionDemo {
private static final String ALGORITHM = "AES";
private static final int KEY_SIZE = 128; // 可以是128, 192, 或 256
public static void main(String[] args) throws Exception {
String originalText = "Hello, HarmonyOS!";
String encryptedText = encrypt(originalText);
String decryptedText = decrypt(encryptedText);
System.out.println("Original: " + originalText);
System.out.println("Encrypted: " + encryptedText);
System.out.println("Decrypted: " + decryptedText);
}
public static String encrypt(String data) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
keyGenerator.init(KEY_SIZE, new SecureRandom());
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static String decrypt(String encryptedData) throws Exception {
byte[] decodedBytes = Base64.getDecoder().decode(encryptedData);
// 注意:这里使用相同的密钥进行解密
// 在实际应用中,你需要安全地存储和访问密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
keyGenerator.init(KEY_SIZE, new SecureRandom());
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
return new String(decryptedBytes);
// 注意:在实际应用中,密钥应该在加密和解密时使用相同的实例
}
}
1 回答750 阅读✓ 已解决
1 回答733 阅读
1 回答715 阅读
1 回答669 阅读
1 回答637 阅读
643 阅读
398 阅读
关于AES|ECB|PKCS7 demo: