当前位置: 首页 > news >正文

百元建网站使用WordPress快速建站视频

百元建网站,使用WordPress快速建站视频,渭南房产网站制作,手机登录微信网页版ASN.1密文转换 介绍 本示例对使用kit.CryptoArchitectureKit加密后的密文格式进行转换。kit.CryptoArchitectureKit加密后的密文格式默认为以base64显示的ASN.1格式问题#xff0c;通过对密文进行base64变换后得到字符数组#xff0c;以16进制数字显示#xff0c;再此基础…ASN.1密文转换 介绍 本示例对使用kit.CryptoArchitectureKit加密后的密文格式进行转换。kit.CryptoArchitectureKit加密后的密文格式默认为以base64显示的ASN.1格式问题通过对密文进行base64变换后得到字符数组以16进制数字显示再此基础上进行密文格式转换从ASN.1格式转换为c1c3c2格式的裸密文再以c1c3c2格式的裸密文进行解密以验证密文转换的正确性。 效果预览 使用说明 点击主页面加密按钮对原始数据使用SM2国密算法进行加密其内容显示在加密数据文本框中 此时解密按钮和base64转换按钮使能点击主页面base64转换按钮对原始密文进行base64转换在加密数据文本框中显示转换后的密文 此时asn.1转换按钮使能点击主页面asn.1转换按钮对密文进行asn.1转换在加密数据文本框中显示转换后的密文 此时加密按钮和base64转换按钮去使能点击主页面解密按钮对密文进行解密在解密数据文本框中显示解密后的文本 此时解密按钮去使能 具体实现 对文本加密在[SM2.ets] 点击加密按钮调用加密函数实现对文本内容进行加密。点击解密按钮调用解密函数实现对文本内容进行解密. 对消息加密的过程中采用cryptoFramework.Cipher完成加解密操作。 import { cryptoFramework } from kit.CryptoArchitectureKit; import { print } from kit.BasicServicesKit; import { buffer, util } from kit.ArkTS; import { SM2CipherText } from ./SM2CipherText;async function genECCPubKey(key: string) {let mode: number 1;let pk: cryptoFramework.Point {x: BigInt(),y: BigInt(),};if ((mode 0x01) ! 0 key ! null) {pk {x: BigInt(0x key.substring(0, 64)),y: BigInt(0x key.substring(64, 128)),}}let keyPairGenerator: cryptoFramework.AsyKeyGeneratorBySpec;let pubKeySpec: cryptoFramework.ECCPubKeySpec {params: genSM2CommonSpec(),pk: pk,algName: ECC,specType: cryptoFramework.AsyKeySpecType.PUBLIC_KEY_SPEC};keyPairGenerator cryptoFramework.createAsyKeyGeneratorBySpec(pubKeySpec);return await keyPairGenerator.generatePubKey(); }async function genECCPriKey(key: string) {let mode: number 2;let sk: bigint BigInt();if ((mode 0x02) ! 0) {sk BigInt(0x key);}let keyPairGenerator: cryptoFramework.AsyKeyGeneratorBySpec;let priKey: cryptoFramework.ECCPriKeySpec {params: genSM2CommonSpec(),sk: sk,algName: ECC,specType: cryptoFramework.AsyKeySpecType.PRIVATE_KEY_SPEC};keyPairGenerator cryptoFramework.createAsyKeyGeneratorBySpec(priKey);return await keyPairGenerator.generatePriKey(); }export function genSM2CommonSpec(): cryptoFramework.ECCCommonParamsSpec {let fieldFp: cryptoFramework.ECFieldFp {fieldType: Fp,p: BigInt(0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF)}let G: cryptoFramework.Point {x: BigInt(0x32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7),y: BigInt(0xBC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0)}let SM2CommonSpec: cryptoFramework.ECCCommonParamsSpec {algName: ECC,specType: cryptoFramework.AsyKeySpecType.COMMON_PARAMS_SPEC,field: fieldFp,a: BigInt(0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC),b: BigInt(0x28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93),g: G,n: BigInt(0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123),h: 1}return SM2CommonSpec; }export async function genSM2Key(pubKey: cryptoFramework.DataBlob | null, priKey: cryptoFramework.DataBlob | null): PromisecryptoFramework.KeyPair {let generator cryptoFramework.createAsyKeyGenerator(SM2_256);return await generator.convertKey(pubKey, priKey) }async function encryptByPrimalKey(message: string, key: string): Promisestring {let base64Helper new util.Base64Helper();console.log(key len: ${key.length});let pubKey await genECCPubKey(key);let keyPair await genSM2Key(pubKey.getEncoded(), null);let cipher cryptoFramework.createCipher(SM2_256|SM3);await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null);let plainTextBlob: cryptoFramework.DataBlob { data: new Uint8Array(buffer.from(message, utf-8).buffer) };let encryptBlob await cipher.doFinal(plainTextBlob);return base64Helper.encodeToStringSync(encryptBlob.data); }export async function encryptSM2(message: string) {let pubKey: string 5A033A9DBEF84C0784C897D070E6608C5AEED39B806DF82853D64E2A686A3794 F9233D20DD878F642D61C2B0344988AE284646226767A1631BBB0DBB6DF40D07return encryptByPrimalKey(message, pubKey); }async function decryptByPrimalKeyArray(messageArray: Uint8Array, key: string): Promisestring {let priKey await genECCPriKey(key);let keyPair await genSM2Key(null, priKey.getEncoded());let cipher cryptoFramework.createCipher(SM2_256|SM3);await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, keyPair.priKey, null);let plainTextBlob: cryptoFramework.DataBlob { data: messageArray };let decryptBlob await cipher.doFinal(plainTextBlob);return buffer.from(decryptBlob.data).toString(utf-8); }export async function decryptSM2(encryptedStr: string, isc1c3c2: Boolean false): Promisestring {let priKey: string 3629EFF03FBC86711F6695CBF5590F0F2FCAAA3C269A1CA9BD64FB4C70DF9C9Fif (isc1c3c2) {let hexStr new SM2CipherText().i2dSM2CipherText(encryptedStr);let encryptedArray new Uint8Array(buffer.from(hexStr, hex).buffer);return decryptByPrimalKeyArray(encryptedArray, priKey);}else {let base64Helper new util.Base64Helper;let message base64Helper.decodeSync(encryptedStr);return decryptByPrimalKeyArray(message, priKey);} } 对密文格式进行转换在[SM2CipherText.ets]点击asn.1按钮调用密文转换函数实现对密文内容进行转换。 完成密文转换操作。 import { SM2Sequence } from ./SM2Sequence; import { hilog } from kit.PerformanceAnalysisKit;export class ASN1Util {static readonly BOOLEAN: string 01;static readonly INTEGER: string 02;static readonly BIT_STRING: string 03;static readonly OCTEN_STRING: string 04;static readonly NULL: string 05;static readonly REAL: string 09;static readonly ENUMERATED: string 0a;static readonly SEQUENCE: string 30;static readonly SET: string 31; }export class SM2CipherText {i2dSM2CipherText(primal_data: string): string {let sm2_sequence new SM2Sequence();sm2_sequence.C1x primal_data.slice(0, 64);primal_data primal_data.slice(64, primal_data.length);sm2_sequence.C1y primal_data.slice(0, 64);primal_data primal_data.slice(64, primal_data.length);sm2_sequence.C3 primal_data.slice(0, 64);primal_data primal_data.slice(64, primal_data.length);sm2_sequence.C2 primal_data;let C1x_title: string (Number.parseInt(0x sm2_sequence.C1x.slice(0, 2)) 127) ? 022100 : 0220;let C1y_title: string (Number.parseInt(0x sm2_sequence.C1y.slice(0, 2)) 127) ? 022100 : 0220;let C3_title: string 0420;let C2_title: string 04 this.genLenHex(sm2_sequence.C2);let sequence_message: string C1x_title sm2_sequence.C1x C1y_title sm2_sequence.C1y C3_title sm2_sequence.C3 C2_title sm2_sequence.C2;let sequence_lenHex: string this.genLenHex(sequence_message);let standard_data 30 sequence_lenHex sequence_message;return standard_data;}d2iSM2CipherText(standard_data: string): string {let message: string standard_data;if (!message.startsWith(ASN1Util.SEQUENCE)) {this.ciphertextErr();}message message.slice(ASN1Util.SEQUENCE.length, message.length);let sequence_lexHex: string this.getLenHex(message);message message.slice(sequence_lexHex.length, message.length);let sequence_len: number this.lenHex2number(sequence_lexHex);if (sequence_len ! message.length / 2) {this.ciphertextErr();}let sm2_sequence new SM2Sequence();message this.readC1(sm2_sequence, message);message this.readC3(sm2_sequence, message);message this.readC2(sm2_sequence, message);console.log(sm2_sequence.toString());let primal_data: string sm2_sequence.C1x sm2_sequence.C1y sm2_sequence.C3 sm2_sequence.C2;return primal_data;}genLenHex(content: string): string {let size: number content.length / 2;let lenHex: string;if (size.toString(16).length % 2 1) {lenHex 0 size.toString(16);} else {lenHex size.toString(16);}if (size 0x80) {return lenHex;}let lenHex_size: number lenHex.length / 2;return (lenHex_size | 0x80).toString(16) lenHex;}getLenHex(data: string): string {let byte: number Number.parseInt(0x data.slice(0, 2));let len_size: number byte 127 ? byte - 0x80 1 : 1;return data.slice(0, len_size * 2);}lenHex2number(lenHex: string): number {if (lenHex.length 2) {return Number.parseInt(0x lenHex);}return Number.parseInt(0x lenHex.slice(2, lenHex.length));}ciphertextErr() {hilog.error(0, d2i_SM2_Ciphertext, 密文格式错误);throw new Error(SM2 ciphertext error!);}readC1(sm2_sequence: SM2Sequence, data:string): string {let xy: string[] [];for (let i 0; i 2; i) {if (data.startsWith(0220)) {xy[i] data.slice(4, 68);data data.slice(68, data.length);} else if (data.startsWith(022100)) {xy[i] data.slice(6, 70);data data.slice(70, data.length);} else {this.ciphertextErr();}}sm2_sequence.C1x xy[0];sm2_sequence.C1y xy[1];return data;}readC2(sm2_sequence: SM2Sequence, data:string): string {if (data.startsWith(ASN1Util.OCTEN_STRING)) {data data.slice(ASN1Util.OCTEN_STRING.length, data.length);let C2_lenHex this.getLenHex(data);data data.slice(C2_lenHex.length, data.length);if (this.lenHex2number(C2_lenHex) ! data.length / 2) {this.ciphertextErr();}sm2_sequence.C2 data;}else {this.ciphertextErr();}return data;}readC3(sm2_sequence: SM2Sequence, data:string): string {if (data.startsWith(0420)) {sm2_sequence.C3 data.slice(4, 68);data data.slice(68, data.length);}else {this.ciphertextErr();}return data;} }以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到 下面是鸿蒙的完整学习路线展示如下 除此之外根据这个学习鸿蒙全栈学习路线也附带一整套完整的学习【文档视频】内容包含如下 内容包含了ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战等技术知识点。帮助大家在学习鸿蒙路上快速成长 鸿蒙【北向应用开发南向系统层开发】文档 鸿蒙【基础实战项目】视频 鸿蒙面经 为了避免大家在学习过程中产生更多的时间成本对比我把以上内容全部放在了↓↓↓想要的可以自拿喔谢谢大家观看
http://www.w-s-a.com/news/950071/

相关文章:

  • 论企业网站建设的必要性微信小程序做一个多少钱
  • 网站制作价格是多少元上海市中小企业服务中心
  • 网站建设管理人员济宁网站建设top
  • 桂林网站建设桂林网站的元素有哪些
  • 广东网站开发推荐网页制作个人简历模板教程
  • e建网保定百度seo公司
  • 网站建设中html代码网络培训课堂app
  • 无锡做网站seo自己做的网站如何上传网上
  • 园林景观网站模板小白怎么做跨境电商
  • 找第三方做网站 需要注意企业网站带数据库
  • 北京南站到北京站flash网站制作单选框和复选框ui组件
  • 网站建设核电集团网站设计案例
  • 宝塔做的网站能不能访问上海的广告公司网站建设
  • 网站会员系统方案新能源网站建设哪家好
  • 全球网站域名域名被墙查询
  • 做期货看资讯什么网站好哈尔滨网站设计联系方式
  • 建站宝盒免费下载上海网论坛网址
  • 国内最有趣的25个网站推广流程
  • 红河做网站抖音小程序怎么挂到抖音上
  • 高度重视机关门户网站建设外包
  • 网站里面送礼物要钱怎么做代码网站开发怎么对接客户
  • 泰州网站制作策划如何做网站需求
  • 门户网站优化报价软件技术公司
  • 怎样换网站logo公司名字大全集免费
  • 为网站网站做推广各类最牛网站建设
  • 网站用自己的电脑做服务器佛山做网站制作公司
  • 一个网站如何做cdn加速器如何上传网站数据库
  • 汝州住房和城乡建设局新网站营销网站定位
  • yy直播官网seo引擎优化是什
  • 做影视网站违法莫品牌营销是什么