RSA NoPadding模式加密失败
RSA使用PKCS1模式可以正常加解密,使用NoPadding模式调用cipher.doFinal(plainText)加密数据抛出异常,无法正常使用。下面是示例代码:可在IDE中直接运行
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer } from '@kit.ArkTS';
export class RSA {
  static async testPKCS1() {
    let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
    // 使用密钥生成器随机生成非对称密钥对
    let keypair = await rsaGenerator.generateKeyPair();
    let pubkey = keypair.pubKey
    let prikey = keypair.priKey
    let message = "hello world"
    let plainText: cryptoFramework.DataBlob = {data: new Uint8Array(buffer.from(message, "utf-8").buffer)}
    //加密
    let cipher = cryptoFramework.createCipher('RSA1024|PKCS1');
    await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubkey, null);
    let encryptData = await cipher.doFinal(plainText);
    //解密
    let decoder = cryptoFramework.createCipher('RSA1024|PKCS1');
    await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, prikey, null);
    let decryptData = await decoder.doFinal(encryptData);
    let messageDecrypted = buffer.from(decryptData.data).toString("utf-8")
    return messageDecrypted
    console.log(messageDecrypted)
  }
  static async testNoPadding() {
    let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
    // 使用密钥生成器随机生成非对称密钥对
    let keypair = await rsaGenerator.generateKeyPair();
    let pubkey = keypair.pubKey
    let prikey = keypair.priKey
    let message = "hello world"
    let plainText: cryptoFramework.DataBlob = {data: new Uint8Array(buffer.from(message, "utf-8").buffer)}
    //加密
    let cipher = cryptoFramework.createCipher('RSA1024|NoPadding');
    await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubkey, null);
    let encryptData = await cipher.doFinal(plainText);
    //解密
    let decoder = cryptoFramework.createCipher('RSA1024|NoPadding');
    await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, prikey, null);
    let decryptData = await decoder.doFinal(encryptData);
    let messageDecrypted = buffer.from(decryptData.data).toString("utf-8")
    return messageDecrypted
    console.log(messageDecrypted)
  }
}
        应用安全
      
        HarmonyOS NEXT
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS AES128/CBC/NoPadding加密模式报错 
1083浏览  • 1回复 待解决
HarmonyOS RSA加密失败问题 
1234浏览  • 1回复 待解决
HarmonyOS 对称加密不支持AES|CBC|NoPadding模式 
1161浏览  • 1回复 待解决
HarmonyOS SM4-ECB-NoPadding加密 
891浏览  • 1回复 待解决
CryptoFramework是否支持“RSA ECB pkcs1padding”加密模式 
3261浏览  • 3回复 待解决
HarmonyOS RSA加密,实用字符串转pubKey失败 
1076浏览  • 1回复 待解决
HarmonyOS AES加密/RSA加密问题 
1615浏览  • 1回复 待解决
HarmonyOS AES128|CBC|NoPadding 加密报错 
989浏览  • 1回复 待解决
HarmonyOS  RSA加密方式 
2174浏览  • 1回复 待解决
HarmonyOS 关于HarmonyOS开发中AES/RSA加密的填充模式该如何填写 
907浏览  • 1回复 待解决
HarmonyOS  RSA分段加密乱码 
1751浏览  • 1回复 待解决
HarmonyOS rsa加密报错 
1237浏览  • 1回复 待解决
HarmonyOS  实现RSA加密功能 
1401浏览  • 1回复 待解决
HarmonyOS RSA加密算法实现 
1432浏览  • 1回复 待解决
HarmonyOS rsa加密返回401错误 
1075浏览  • 1回复 待解决
HarmonyOS SM4如何进行SM4/ECB/NoPadding加密 
1224浏览  • 1回复 待解决
RSA加密方法在HarmonyOS 的实现 
1373浏览  • 1回复 待解决
RSA 加密的具体使用方法 
1451浏览  • 1回复 待解决
HarmonyOS 请问ArkTS如何实现RSA加密? 
1690浏览  • 1回复 待解决
HarmonyOS RSA私钥加密公钥解密 
1312浏览  • 1回复 待解决
HarmonyOS RSA加密中,公私钥问题 
1229浏览  • 1回复 待解决
HarmonyOS 请求参数的AES加密和RSA加密的实现方法 
1075浏览  • 1回复 待解决
HarmonyOS 需要RSA/ECB/PKCS1Padding加密。目前文档没有看到有支持这个模式 
870浏览  • 1回复 待解决
RSA加密,使用自有私钥解密报错 
1395浏览  • 1回复 待解决
如何使用RSA公钥加密明文数据 
1638浏览  • 1回复 待解决





















NoPadding:不带填充,输入的数据必须与RSA钥模(即RSA模数n的字节长度)一样长;输出数据长度与RSA钥模一样长。
参考文档:非对称密钥加解密算法规格