HarmonyOS鸿蒙Next中字节数组进行MD5加密

HarmonyOS鸿蒙Next中字节数组进行MD5加密 找了一圈没找到字节数组进行MD5加密的资料,用字符串加密后转成字节数组又不对,下面是java转换方法,麻烦帮忙实现下

public static byte[] encryptMD5(byte[] rawString) {
  if (rawString == null){
    return null;
  }
  try {
    MessageDigest md5 = MessageDigest.getInstance("MD5");
    md5.update(rawString);
    return md5.digest();
  } catch (Exception e){
  e.printStackTrace();
}
  return null;
}

更多关于HarmonyOS鸿蒙Next中字节数组进行MD5加密的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

目前md5仅支持对字符串进行加密 参考以下代码demo实例

import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer, util } from '@kit.ArkTS';

@Entry
@Component
struct MD5Crypto {
  @State message: string = '点击开始';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            doMdBySync("")
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

const base = new util.Base64Helper();
function doMdBySync(message:string) {
  let mdAlgName = 'SHA256'; // 摘要算法名
  // let message = 'mdTestMessgae'; // 待摘要的数据
  let md = cryptoFramework.createMd(mdAlgName);
  // 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
  md.updateSync({ data: new Uint8Array(buffer.from(message, 'utf-8').buffer) });
  let mdResult = md.digestSync();
  console.info('[Sync]:Md result base64:' + base.encodeToStringSync(mdResult.data));
  console.info('Md result hex:' + buffer.from(mdResult.data).toString('hex'));
  let mdLen = md.getMdLength();
  console.info("md len: " + mdLen);
}

可以尝试将 单独的byte转成字符串string 加密后在转成byte

更多关于HarmonyOS鸿蒙Next中字节数组进行MD5加密的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,对字节数组进行MD5加密可以通过使用系统提供的加密库来实现。鸿蒙系统提供了ohos.security.crypto模块,其中包含了常用的加密算法,包括MD5。

具体步骤如下:

  1. 导入加密模块:首先需要导入ohos.security.crypto模块中的Crypto类。

    import { Crypto } from 'ohos.security.crypto';
    
  2. 创建MD5实例:使用Crypto类创建一个MD5加密实例。

    let md5 = Crypto.createMd5();
    
  3. 更新数据:将需要加密的字节数组传递给MD5实例的update方法。

    let data = new Uint8Array([...]); // 替换为实际的字节数组
    md5.update(data);
    
  4. 获取加密结果:调用digest方法获取MD5加密后的结果。

    let result = md5.digest();
    
  5. 处理结果digest方法返回的是一个字节数组,可以根据需要进行进一步处理,例如转换为十六进制字符串。

    let hexString = Array.from(result).map(byte => byte.toString(16).padStart(2, '0')).join('');
    

通过以上步骤,可以在鸿蒙OS中对字节数组进行MD5加密。

在HarmonyOS鸿蒙Next中,可以使用MessageDigest类对字节数组进行MD5加密。以下是一个示例代码:

import ohos.security.MessageDigest;
import ohos.utils.HexUtil;

public class MD5Example {
    public static String md5(byte[] input) {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] digest = md.digest(input);
        return HexUtil.toHexString(digest);
    }

    public static void main(String[] args) {
        byte[] data = "Hello, HarmonyOS".getBytes();
        String md5Hash = md5(data);
        System.out.println("MD5 Hash: " + md5Hash);
    }
}

该代码使用MessageDigest类生成MD5哈希值,并通过HexUtil将结果转换为十六进制字符串。

回到顶部