赞
踩
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加解密:
- async function SM4ED(plainText: string) {
-
- let sm4Generator = cryptoFramework.createSymKeyGenerator('SM4_128');
- let cipher = cryptoFramework.createCipher("SM4_128|CBC|NoPadding");
- let decoder = cryptoFramework.createCipher("SM4_128|CBC|NoPadding");
- let input: cryptoFramework.DataBlob = { data: stringToUint8Array(plainText) };
- let keydata: cryptoFramework.DataBlob = { data: stringToUint8Array('yc1436w86vhys51r') }; //密钥
- let ivdata: cryptoFramework.DataBlob = { data: stringToUint8Array('43pr5253zf5mm7jd') }; //偏移
- let iv: cryptoFramework.IvParamsSpec = { iv: ivdata, algName: 'IvParamsSpec' } //cbc模式的参数
- let key: cryptoFramework.SymKey
- try {
- key = await sm4Generator.convertKey(keydata);
- // 加密
- // 最后一个参数是偏移量的设置,如果没有则为null,下面解密同理
- await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, iv);
- let cipherData = await cipher.doFinal(input)
- //解密
- await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, key, iv);
- let result = await decoder.doFinal(cipherData);
- //解密后的明文
- let str = uint8ArrayToString(result.data)
- AlertDialog.show({ message: "decrypt success ==>" + str })
- } catch (err) {
- console.error(err)
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。