HarmonyOS 鸿蒙Next API9 Stage模型 MD5加密字符串

HarmonyOS 鸿蒙Next API9 Stage模型 MD5加密字符串 在API9 Stage 模型中使用MD5加密,使用ohpm的三方库"@ohos/crypto-js"进行加密操作

【集成步骤】

  1. 在entry-oh-package.json5中添加"@ohos/crypto-js"依赖,点击sync同步依赖,crypto-js最新版本是2.0.2只支持API10,API9需要使用2.0.0版本

  2. 在工程中使用导入Crypto库

import CryptoJS from '[@ohos](/user/ohos)/crypto-js'
  1. MD5加密方法

Crypto官网方法如下:

我们可以直接通过CryptoJS.MD5(data).toStgring()进行加密获取加密后的字符串,

使用上述方法获取的是32位结果,如果需要16位加密结果方法如下:

CryptoJS.MD5(this.message).toString().substring(8,24)

【完整示例代码】

import CryptoJS from '[@ohos](/user/ohos)/crypto-js'
@Entry
@Componentstruct CryptoPage {
  @State message: string = 'wt123456'
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() =>{
            var result=CryptoJS.MD5(this.message).toString().substring(8,24)
            this.message= result
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next API9 Stage模型 MD5加密字符串的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

楼主,您好,我使用crypto-js.js包

import {CryptoJS} from '@ohos/crypto-js'
var hash = CryptoJS.MD5("456789")
console.log("md5加密"+hash)
var md = CryptoJS.MD5("123456")
console.log("md5加"+md )

输出结果皆为a5b830a5596c47a80d6ae635dd1881c6

两者输出结果相同是什么原因呢?

更多关于HarmonyOS 鸿蒙Next API9 Stage模型 MD5加密字符串的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用2.0.0版本输出的结果是不同的,三方库相关的疑问可以去对应仓库中提issues咨询
https://gitee.com/openharmony-sig/crypto-js/issues

多谢楼主,这个问题已经解决了,是因为使用的视图预览点击造成的,

大佬能解释下,为什么crypto-js.js文件里看不到MD5方法,但是却能直接使用

MD5 hash algorithm.

var MD5 = C_algo.MD5 = Hasher.extend({
    _doReset: function () {
        this._hash = new WordArray.init([
            0x67452301, 0xefcdab89,
            0x98badcfe, 0x10325476
        ]);
    },

在HarmonyOS鸿蒙Next API9 Stage模型中,可以使用ohos.security.cryptoFramework模块进行MD5加密字符串。具体步骤如下:

  1. 导入cryptoFramework模块:

    import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework';
    
  2. 创建MD5算法实例:

    let md5 = cryptoFramework.createMd();
    
  3. 初始化并更新数据:

    md5.init();
    let input = 'your_string_to_encrypt';
    let dataBlob = { data: stringToUint8Array(input) };
    md5.update(dataBlob);
    
  4. 获取加密结果:

    md5.doFinal()
        .then(output => {
            let md5Result = uint8ArrayToHex(output.data);
            console.log('MD5 Result:', md5Result);
        })
        .catch(error => {
            console.error('MD5 encryption failed:', error);
        });
    
  5. 辅助函数:

    function stringToUint8Array(str) {
        let arr = [];
        for (let i = 0; i < str.length; i++) {
            arr.push(str.charCodeAt(i));
        }
        return new Uint8Array(arr);
    }
    
    function uint8ArrayToHex(uint8Array) {
        return Array.prototype.map.call(uint8Array, byte => ('0' + (byte & 0xFF).toString(16)).slice(-2)).join('');
    }
    

以上代码实现了在HarmonyOS鸿蒙Next API9 Stage模型中使用MD5加密字符串的功能。

回到顶部