当前位置:   article > 正文

【HarmonyOS NEXT】SM2加密问题_鸿蒙sm2加解密示例

鸿蒙sm2加解密示例

 【关键字】

TextInput / 监听键盘事件 / 软键盘输入

【问题描述】

问题一:

SM2是默认c1c3c2的吗?还是有配置可以设置?

问题二:

java SM2 在构造ECDomainParameters时,会传入seed参数

定义byte数组,byte[] seed = "1234poiutyr".getBytes();

ECDomainParameters domainParameters = new ECDomainParameters(ecp.getCurve(), ecp.getG(), ecp.getN(), ecp.getH(), seed);

ECKeyGenerationParameters keyGenerationParameters = new ECKeyGenerationParameters(domainParameters, new SecureRandom());

ECKeyPairGenerator generator = new ECKeyPairGenerator();

generator.init(keyGenerationParameters);

Demo如上,SM2之前的项目创建domain时,是有设置byte[] seed,这个是有地方可以设置的吗?

【解决方案】

问题一:

c1c3c2是标准格式,不可配置。

问题二:

ArkTS无法设置seed。鸿蒙当前加解密算法库封装的OpenSSL OpenSSL不支持mac算法(CBC-MAC)和填充算法。

如果需要使用填充算法可以使用SM4加解密:

  1. async function SM4ED(plainText: string) {
  2. let sm4Generator = cryptoFramework.createSymKeyGenerator('SM4_128');
  3. let cipher = cryptoFramework.createCipher("SM4_128|CBC|NoPadding");
  4. let decoder = cryptoFramework.createCipher("SM4_128|CBC|NoPadding");
  5. let input: cryptoFramework.DataBlob = { data: stringToUint8Array(plainText) };
  6. let keydata: cryptoFramework.DataBlob = { data: stringToUint8Array('yc1436w86vhys51r') }; //密钥
  7. let ivdata: cryptoFramework.DataBlob = { data: stringToUint8Array('43pr5253zf5mm7jd') }; //偏移
  8. let iv: cryptoFramework.IvParamsSpec = { iv: ivdata, algName: 'IvParamsSpec' } //cbc模式的参数
  9. let key: cryptoFramework.SymKey
  10. try {
  11. key = await sm4Generator.convertKey(keydata);
  12. // 加密
  13. // 最后一个参数是偏移量的设置,如果没有则为null,下面解密同理
  14. await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, iv);
  15. let cipherData = await cipher.doFinal(input)
  16. //解密
  17. await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, key, iv);
  18. let result = await decoder.doFinal(cipherData);
  19. //解密后的明文
  20. let str = uint8ArrayToString(result.data)
  21. AlertDialog.show({ message: "decrypt success ==>" + str })
  22. } catch (err) {
  23. console.error(err)
  24. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/643747
推荐阅读
相关标签
  

闽ICP备14008679号