HarmonyOS 字节数组进行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;
}
阅读 605
1 个回答

目前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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进