示例参考如下:import { cryptoFramework } from '@kit.CryptoArchitectureKit'; import { buffer, util } from '@kit.ArkTS'; import { BusinessError } from '@kit.BasicServicesKit'; @Entry @Component struct RSACrypto { @State message: string = '点击开始'; build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(() => { rsa1024Crypto() }) } .width('100%') } .height('100%') } } // 加密消息 function encryptMessagePromise(publicKey: cryptoFramework.PubKey, plainText: cryptoFramework.DataBlob) { let cipher = cryptoFramework.createCipher('RSA1024|PKCS1'); cipher.initSync(cryptoFramework.CryptoMode.ENCRYPT_MODE, publicKey, null); let encryptData = cipher.doFinalSync(plainText); return encryptData; } // 解密消息 function decryptMessagePromise(privateKey: cryptoFramework.PriKey, cipherText: cryptoFramework.DataBlob) { let decoder = cryptoFramework.createCipher('RSA1024|PKCS1'); decoder.initSync(cryptoFramework.CryptoMode.DECRYPT_MODE, privateKey, null); let decryptData = decoder.doFinalSync(cipherText); return decryptData; } // 生成RSA密钥对 function genKeyPairByData(pubKeyData: Uint8Array, priKeyData: Uint8Array) { let pubKeyBlob: cryptoFramework.DataBlob = { data: pubKeyData }; let priKeyBlob: cryptoFramework.DataBlob = { data: priKeyData }; let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024'); let keyPair = rsaGenerator.convertKeySync(pubKeyBlob, priKeyBlob); console.info('convertKey success'); return keyPair; } function rsa1024Crypto() { let pkData = "xxx" let skData = "xxx" let base64 = new util.Base64Helper(); let base64pkData = base64.decodeSync(pkData) let base64skData = /*new Uint8Array()*/ base64.decodeSync(skData); let keyPair = genKeyPairByData(base64pkData, base64skData); let pubKey = keyPair.pubKey; let priKey = keyPair.priKey; let message = " This is a long plainTest!" /*'This is a test'*/; // 把字符串按utf-8解码为Uint8Array let plainText: cryptoFramework.DataBlob = { data: new Uint8Array(/*base64.decodeSync(messageBase64)*/buffer.from(message, 'utf-8').buffer) }; let encryptText = encryptMessagePromise(pubKey, plainText); let decryptText = decryptMessagePromise(priKey, encryptText); try { } catch (error) { console.error(JSON.stringify(error)); } let baseDecrypto = base64.encodeToStringSync(decryptText.data) console.error('base64 decrypted result string:' + baseDecrypto); let messageDecrypted = buffer.from(decryptText.data).toString('utf-8'); console.error('decrypted result string:' + messageDecrypted); }
示例参考如下: