CrptoUtils.ets 1.15 KB
import cryptoFramework from '@ohos.security.cryptoFramework';
import buffer from '@ohos.buffer';

export class CrptoUtils {

  static md5(message: string) : Promise<string> {
    return CrptoUtils.mdFunc(message, 'MD5')
  }

  static mdFunc(message: string, algoName: string = 'MD5'): Promise<string> {
    return new Promise<string>(async (reslove, fail) => {

      try {
        let md = cryptoFramework.createMd(algoName);
        // 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
        await md.update({ data: new Uint8Array(buffer.from(message, 'utf-8').buffer) });
        let mdResult = await md.digest();
        // console.info('Md result:' + mdResult.data);

        // const string = mdResult.data.map((charCode, index, array) => {
        //   return String.fromCharCode(charCode)
        // }).join("")

        let string = "";
        for (let i = 0; i < mdResult.data.length; i++) {
          string += mdResult.data[i].toString(16).padStart(2, "0")
        }

        // const string = mdResult.data.join('')

        reslove(string)
      } catch (e) {
        fail(e)
      }
    })
  }
}