HarmonyOS 鸿蒙Next中关于私钥SHA256加签方法
HarmonyOS 鸿蒙Next中关于私钥SHA256加签方法
看着是通过私钥和SHA256加签方法
想问下对应的鸿蒙方法是什么?
如下
let input1: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(content.substring(0,content.length/2), 'utf-8').buffer) };
let input2: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(content.substring(content.length/2,content.length), 'utf-8').buffer) };
let base64 = new util.Base64Helper()
let pkData = new Uint8Array(buffer.from('', 'utf-8').buffer);
let skData = base64.decodeSync(SIGN_PrivateKey);
// 生成公私密钥对
let pubKeyBlob: cryptoFramework.DataBlob = { data: pkData };
let priKeyBlob: cryptoFramework.DataBlob = { data: skData };
let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
let keyPair = await rsaGenerator.convertKey(pubKeyBlob, priKeyBlob);
let signData = await signMessagePromise(keyPair.priKey,input1,input2);
return signData.data
更多关于HarmonyOS 鸿蒙Next中关于私钥SHA256加签方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer, util } from '@kit.ArkTS';
@Entry
@Component
struct CryptPage {
@State message: string = '点击开始';
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
convertAsyKey()
})
}
.width('100%')
}
.height('100%')
}
}
export async function signMessagePromise(content: cryptoFramework.DataBlob, priKey: cryptoFramework.PriKey) {
let signAlg = "RSA1024PKCS1|SHA256"; // 签名算法规格
let signer = cryptoFramework.createSign(signAlg);
await signer.init(priKey);
let signData = await signer.sign(content);
return signData;
}
export async function verifyMessagePromise(content: cryptoFramework.DataBlob, signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
let verifyAlg = "RSA1024|PKCS1|SHA256"; // 签名算法规格
let verifier = cryptoFramework.createVerify(verifyAlg);
await verifier.init(pubKey);
let res = await verifier.verify(content, signMessageBlob);
console.info("verify result is " + res);
return res;
}
export async function convertAsyKey() {
let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA2048');
// 随机生成的公私钥对,Base64格式
let pubKeyVal = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAn7UujTR0CX1ujnNn70MtLlSESk/Y6fBsSw3s9/XqkuiXbGPUzkNbP0rldmTfzLEw/bhu43/v4mbeq18OAoIdpW/I4OhNSMhAO+c0Urjmqp0/p/0xEPO8r42g1OExaGdioLj9CUw18ODEG8nNhW/Py0NN002G87wJm/bYwG0OhwIDAQAB";
let priKeyVal = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMCftS6NNHQJfW6Oc2fvQy0uVIRKT9jp8GxLDez39eqS6JdsY9TOQ1s/P...";
let pkBlob: cryptoFramework.DataBlob = { data: stringToUnit8Array(pubKeyVal) };
let prBlob: cryptoFramework.DataBlob = { data: stringToUnit8Array(priKeyVal) };
rsaGenerator.convertKey(pkBlob, prBlob, async (err, keyPair) => {
if (err) {
console.error(`convertKey failed, ${err.code}, ${err.message}`);
return;
}
console.info('convertKey success!');
let plainText: string = "test";
let res = await signMessagePromise({ data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer) }, keyPair.priKey)
console.log(`convertKey sign result:${new util.Base64Helper().encodeToStringSync(res.data)}`)
let verifyResult = await verifyMessagePromise({
data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer)
}, res, keyPair.pubKey);
if (verifyResult == true) {
console.info('convertKey verify success');
} else {
console.error('convertKey verify failed');
}
});
}
export function stringToUnit8Array(str: string): Uint8Array {
return new util.Base64Helper().decodeSync(str)
}
更多关于HarmonyOS 鸿蒙Next中关于私钥SHA256加签方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,实现私钥SHA256加签可以通过使用CryptoFramework模块来完成。首先,需要使用KeyPairGenerator生成密钥对,然后使用Sign类进行签名操作。具体步骤如下:
-
生成密钥对:使用
KeyPairGenerator生成RSA或ECC密钥对。let keyPairGenerator = cryptoFramework.createKeyPairGenerator("RSA1024|PRIMES_2"); let keyPairPromise = keyPairGenerator.generateKeyPair(); -
创建签名对象:使用
Sign类创建签名对象,并指定算法为SHA256。let sign = cryptoFramework.createSign("RSA1024|SHA256"); -
初始化签名对象:使用私钥初始化签名对象。
keyPairPromise.then(keyPair => { sign.init(keyPair.priKey); }); -
更新数据:将要签名的数据更新到签名对象中。
let data = "data to be signed"; sign.update(data); -
执行签名:调用
sign方法进行签名,获取签名结果。let signPromise = sign.sign(null); signPromise.then(signature => { console.log("Signature: " + signature.data); });
以上步骤实现了在HarmonyOS鸿蒙Next中使用私钥进行SHA256加签的过程。
在HarmonyOS鸿蒙Next中,使用SHA256对私钥进行加签的步骤如下:
- 获取私钥:通过
KeyPairGenerator生成或从密钥库中获取私钥。 - 创建签名实例:使用
Signature类,指定算法为"SHA256withRSA"。 - 初始化签名:调用
initSign(privateKey)方法,传入私钥。 - 更新数据:通过
update(data)方法,传入待签名的数据。 - 生成签名:调用
sign()方法,生成签名结果。
示例代码:
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(data);
byte[] signedData = signature.sign();
确保处理私钥时注意安全性,避免泄露。

