HarmonyOS鸿蒙NEXT中实现多种加解密示例代码
HarmonyOS鸿蒙NEXT中实现多种加解密示例代码
介绍
该示例主要分为3个部分:
- 国密算法的加解密:包含了SM2、SM4的加解密示例;
- 安卓格式和鸿蒙格式的转换:包含了安卓格式的公私钥,转化为鸿蒙格式的公私钥;安卓加密的密文,在鸿蒙解密;鸿蒙生成的密文解码,用于安卓解密;
- 以AES128算法为例,实现了CBC/ECB/GCM算法分组的加解密示例。
效果预览
打开应用,点击按钮,进入对应示例,进行对应的加解密测试。
实现思路
- 国密算法的加解密
-
SM2加密
-
SM2解密
-
SM4加密
-
SM4解密
-
安卓生成的密钥转换为鸿蒙
-
AES128加解密(ECB/CBC/GCM)
通过调用不同加解密算法实现ECB/CBC/GCM加解密
更多关于HarmonyOS鸿蒙NEXT中实现多种加解密示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS NEXT中,可以通过使用[@ohos](/user/ohos).security.cryptoFramework
模块来实现多种加解密操作。以下是一些常见的加解密示例代码:
-
对称加解密(AES):
import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework'; async function aesEncryptDecrypt() { let symKeyGenerator = cryptoFramework.createSymKeyGenerator('AES256'); let key = await symKeyGenerator.generateSymKey(); let cipher = cryptoFramework.createCipher('AES256|ECB|PKCS7'); await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, null); let input = { data: new Uint8Array([1, 2, 3, 4, 5]) }; let encrypted = await cipher.doFinal(input); await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, key, null); let decrypted = await cipher.doFinal(encrypted); }
-
非对称加解密(RSA):
import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework'; async function rsaEncryptDecrypt() { let keyPairGenerator = cryptoFramework.createAsyKeyGenerator('RSA2048|PRIMES_2'); let keyPair = await keyPairGenerator.generateKeyPair(); let cipher = cryptoFramework.createCipher('RSA2048|PKCS1'); await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null); let input = { data: new Uint8Array([1, 2, 3, 4, 5]) }; let encrypted = await cipher.doFinal(input); await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, keyPair.priKey, null); let decrypted = await cipher.doFinal(encrypted); }
-
HMAC:
import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework'; async function hmacExample() { let symKeyGenerator = cryptoFramework.createSymKeyGenerator('HMAC|SHA256'); let key = await symKeyGenerator.generateSymKey(); let mac = cryptoFramework.createMac('HMAC|SHA256'); await mac.init(key); let input = { data: new Uint8Array([1, 2, 3, 4, 5]) }; let macData = await mac.doFinal(input); }
-
哈希(SHA256):
import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework'; async function hashExample() { let md = cryptoFramework.createMd('SHA256'); await md.init(); let input = { data: new Uint8Array([1, 2, 3, 4, 5]) }; let hashData = await md.doFinal(input); }
这些代码示例展示了如何在HarmonyOS NEXT中使用cryptoFramework
模块进行对称加解密、非对称加解密、HMAC和哈希操作。
更多关于HarmonyOS鸿蒙NEXT中实现多种加解密示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙NEXT中,可以通过security
模块实现多种加解密操作。以下是使用AES加密的示例代码:
import security from '@ohos.security';
// AES加密
function aesEncrypt(plainText: string, key: string): string {
const cipher = security.crypto.createCipher('aes-256-cbc', key);
let encrypted = cipher.update(plainText, 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
}
// AES解密
function aesDecrypt(encryptedText: string, key: string): string {
const decipher = security.crypto.createDecipher('aes-256-cbc', key);
let decrypted = decipher.update(encryptedText, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
// 示例调用
const key = 'mySecretKey12345678901234567890';
const encrypted = aesEncrypt('Hello HarmonyOS', key);
console.log('Encrypted:', encrypted);
const decrypted = aesDecrypt(encrypted, key);
console.log('Decrypted:', decrypted);
此代码展示了如何使用AES-256-CBC模式进行加密和解密。security.crypto
模块还支持其他加密算法,如RSA、SHA等,开发者可根据需求选择合适的算法。