HarmonyOS鸿蒙Next加解密示例代码

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS鸿蒙Next加解密示例代码

介绍

本示例介绍的SM2加解密的实现方法

demo详情链接

https://gitee.com/scenario-samples/sm2

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位)。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!