//私钥加密
async function signMessagePromise(priKey: cryptoFramework.PriKey) {
let signAlg = "RSA1024|PKCS1|NoHash|OnlySign";
let signer = cryptoFramework.createSign(signAlg);
await signer.init(priKey);
let signData = await signer.sign({data:stringToUint8Array("私钥加密")});
return signData;
}
// 公钥解密
async function verifyMessagePromise(signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
let verifyAlg = "RSA1024|PKCS1|NoHash|Recover";
let verifier = cryptoFramework.createVerify(verifyAlg);
await verifier.init(pubKey);
let rawSignData = await verifier.recover(signMessageBlob);
console.log("rsa puk data " + uint8ArrayToString(rawSignData?.data))
return rawSignData;
}
// 字节流转成可理解的字符串
export function uint8ArrayToString(array:Uint8Array) {
// 将UTF-8编码转换成Unicode编码
let out: string = "";
let index: number = 0;
let len: number = array.length;
while (index < len) {
let character = array[index++];
switch(character >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
out += String.fromCharCode(character);
break;
case 12:
case 13:
out += String.fromCharCode(((character & 0x1F) << 6) | (array[index++] & 0x3F));
break;
case 14:
out += String.fromCharCode(((character & 0x0F) << 12) | ((array[index++] & 0x3F) << 6) | ((array[index++] & 0x3F) << 0));
break;
default:
break;
}
}
return out;
}
// 字符串转成字节流
export function stringToUint8Array(str: string) {
return new Uint8Array(buffer.from(str,'utf-8').buffer);
}
支持。你可以参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...