HarmonyOS鸿蒙NEXT中实现多种加解密示例代码

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

HarmonyOS鸿蒙NEXT中实现多种加解密示例代码 介绍
该示例主要分为3个部分:

  1. 国密算法的加解密:包含了SM2、SM4的加解密示例;
  2. 安卓格式和鸿蒙格式的转换:包含了安卓格式的公私钥,转化为鸿蒙格式的公私钥;安卓加密的密文,在鸿蒙解密;鸿蒙生成的密文解码,用于安卓解密;
  3. 以AES128算法为例,实现了CBC/ECB/GCM算法分组的加解密示例。

实现多种加解密源码链接

效果预览

打开应用,点击按钮,进入对应示例,进行对应的加解密测试。

实现思路

  1. 国密算法的加解密
  • SM2加密

  • SM2解密

  • SM4加密

  • SM4解密

  1. 安卓生成的密钥转换为鸿蒙

  2. AES128加解密(ECB/CBC/GCM)

通过调用不同加解密算法实现ECB/CBC/GCM加解密


更多关于HarmonyOS鸿蒙NEXT中实现多种加解密示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS NEXT中,可以通过使用[@ohos](/user/ohos).security.cryptoFramework模块来实现多种加解密操作。以下是一些常见的加解密示例代码:

  1. 对称加解密(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);
    }
  2. 非对称加解密(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);
    }
  3. 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);
    }
  4. 哈希(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等,开发者可根据需求选择合适的算法。

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