HarmonyOS鸿蒙Next加解密示例代码
2 回复
HarmonyOS鸿蒙Next中的加解密功能主要通过CryptoFramework
模块实现。以下是一个简单的加解密示例代码,使用AES算法进行加密和解密。
import cryptoFramework from '@ohos.security.cryptoFramework';
async function aesEncryptDecrypt() {
// 创建对称密钥生成器
let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES128');
// 生成对称密钥
let symKey = await symKeyGenerator.convertKey({
data: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
});
// 创建加密器
let cipher = cryptoFramework.createCipher('AES128|ECB|PKCS7');
// 初始化加密器
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null);
// 待加密的数据
let plainText = 'Hello, HarmonyOS!';
let input = { data: new Uint8Array(plainText.split('').map(c => c.charCodeAt(0))) };
// 加密数据
let encrypted = await cipher.doFinal(input);
// 创建解密器
let decipher = cryptoFramework.createCipher('AES128|ECB|PKCS7');
// 初始化解密器
await decipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, symKey, null);
// 解密数据
let decrypted = await decipher.doFinal(encrypted);
// 输出解密后的数据
console.log('Decrypted data: ' + String.fromCharCode.apply(null, decrypted.data));
}
aesEncryptDecrypt();
该代码展示了如何使用CryptoFramework
模块进行AES加密和解密操作。首先生成一个AES对称密钥,然后使用该密钥进行加密,最后再解密得到原始数据。
更多关于HarmonyOS鸿蒙Next加解密示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
以下是HarmonyOS(鸿蒙Next)中实现AES加解密的示例代码:
import ohos.security.crypto.Crypto;
import ohos.security.crypto.CryptoKey;
import ohos.security.crypto.CryptoManager;
public class AESExample {
public static void main(String[] args) {
String plainText = "Hello, HarmonyOS!";
String key = "1234567890123456"; // 16字节密钥
// 加密
byte[] encrypted = encrypt(plainText.getBytes(), key.getBytes());
System.out.println("Encrypted: " + new String(encrypted));
// 解密
byte[] decrypted = decrypt(encrypted, key.getBytes());
System.out.println("Decrypted: " + new String(decrypted));
}
public static byte[] encrypt(byte[] data, byte[] key) {
CryptoManager cryptoManager = CryptoManager.getInstance();
CryptoKey cryptoKey = cryptoManager.createKey(key, CryptoKey.Type.AES);
Crypto crypto = cryptoManager.createCrypto(Crypto.Algorithm.AES);
return crypto.encrypt(data, cryptoKey);
}
public static byte[] decrypt(byte[] data, byte[] key) {
CryptoManager cryptoManager = CryptoManager.getInstance();
CryptoKey cryptoKey = cryptoManager.createKey(key, CryptoKey.Type.AES);
Crypto crypto = cryptoManager.createCrypto(Crypto.Algorithm.AES);
return crypto.decrypt(data, cryptoKey);
}
}
此代码展示了如何使用HarmonyOS的CryptoManager
进行AES加解密。确保密钥长度为16字节(128位)。