成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

微信小程序國密算法實(shí)現(xiàn)庫sm-crypto

姘存按 / 1641人閱讀

摘要:該算法不公開,調(diào)用該算法時(shí),需要通過加密芯片的接口進(jìn)行調(diào)用。為非對(duì)稱加密,基于。無線局域網(wǎng)標(biāo)準(zhǔn)的分組數(shù)據(jù)算法。對(duì)稱加密,密鑰長度和分組長度均為位??梢栽谖⑿判〕绦蛑袑?shí)現(xiàn)國密算法。

國密算法是國家密碼局制定標(biāo)準(zhǔn)的一系列算法,主要有SM1,SM2,SM3,SM4,密鑰長度和分組長度均為128位。其中:

SM1 為對(duì)稱加密。其加密強(qiáng)度與AES相當(dāng)。該算法不公開,調(diào)用該算法時(shí),需要通過加密芯片的接口進(jìn)行調(diào)用。

SM2為非對(duì)稱加密,基于ECC。該算法已公開。由于該算法基于ECC,故其簽名速度與秘鑰生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一種)安全強(qiáng)度比RSA 2048位高,但運(yùn)算速度快于RSA。

SM3 消息摘要??梢杂肕D5作為對(duì)比理解。該算法已公開。校驗(yàn)結(jié)果為256位。

SM4 無線局域網(wǎng)標(biāo)準(zhǔn)的分組數(shù)據(jù)算法。對(duì)稱加密,密鑰長度和分組長度均為128位。

sm-crypto可以在微信小程序中實(shí)現(xiàn)SM2、SM3、SM4國密算法。

使用

安裝 sm-crypto

從小程序基礎(chǔ)庫版本 2.2.1 或以上、及開發(fā)者工具 1.02.1808300 或以上開始,小程序支持使用 npm 安裝第三方包。

npm install --save miniprogram-sm-crypto
sm2

獲取密鑰對(duì)

const sm2 = require("miniprogram-sm-crypto").sm2;

let keypair = sm2.generateKeyPairHex();

publicKey = keypair.publicKey; // 公鑰
privateKey = keypair.privateKey; // 私鑰

加密解密

const sm2 = require("miniprogram-sm-crypto").sm2;
const cipherMode = 1; // 1 - C1C3C2,0 - C1C2C3,默認(rèn)為1

let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode); // 加密結(jié)果
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode); // 解密結(jié)果

簽名驗(yàn)簽

const sm2 = require("miniprogram-sm-crypto").sm2;

// 純簽名 + 生成橢圓曲線點(diǎn)
let sigValueHex = sm2.doSignature(msg, privateKey); // 簽名
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey); // 驗(yàn)簽結(jié)果

// 純簽名
let sigValueHex2 = sm2.doSignature(msg, privateKey, {
    pointPool: [sm2.getPoint(), sm2.getPoint(), sm2.getPoint(), sm2.getPoint()], // 傳入事先已生成好的橢圓曲線點(diǎn),可加快簽名速度
}); // 簽名
let verifyResult2 = sm2.doVerifySignature(msg, sigValueHex2, publicKey); // 驗(yàn)簽結(jié)果

// 純簽名 + 生成橢圓曲線點(diǎn) + der編解碼
let sigValueHex3 = sm2.doSignature(msg, privateKey, {
    der: true,
}); // 簽名
let verifyResult3 = sm2.doVerifySignature(msg, sigValueHex3, publicKey, {
    der: true,
}); // 驗(yàn)簽結(jié)果

// 純簽名 + 生成橢圓曲線點(diǎn) + sm3雜湊
let sigValueHex4 = sm2.doSignature(msg, privateKey, {
    hash: true,
}); // 簽名
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey, {
    hash: true,
}); // 驗(yàn)簽結(jié)果

// 純簽名 + 生成橢圓曲線點(diǎn) + sm3雜湊(不做公鑰推導(dǎo))
let sigValueHex5 = sm2.doSignature(msg, privateKey, {
    hash: true,
    publicKey, // 傳入公鑰的話,可以去掉sm3雜湊中推導(dǎo)公鑰的過程,速度會(huì)比純簽名 + 生成橢圓曲線點(diǎn) + sm3雜湊快
});
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey, {
    hash: true,
    publicKey,
});

獲取橢圓曲線點(diǎn)

const sm2 = require("miniprogram-sm-crypto").sm2;

let poin = sm2.getPoint(); // 獲取一個(gè)橢圓曲線點(diǎn),可在sm2簽名時(shí)傳入
sm3
const sm3 = require("miniprogram-sm-crypto").sm3;

let hashData = sm3("abc"); // 雜湊
sm4

加密

const sm4 = require("miniprogram-sm-crypto").sm4;
const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];

let encryptData = sm4.encrypt([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10], key); // 加密

解密

const sm4 = require("miniprogram-sm-crypto").sm4;
const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];

let decryptData = sm4.decrypt([0x68, 0x1e, 0xdf, 0x34, 0xd2, 0x06, 0x96, 0x5e, 0x86, 0xb3, 0xe9, 0x4f, 0x53, 0x6e, 0x42, 0x46], key); // 解密

其他

sm-crypto項(xiàng)目地址:https://github.com/wechat-min...

【小程序推薦】百科知識(shí)詞典

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98666.html

相關(guān)文章

  • Bytom國密網(wǎng)說明和指南

    摘要:在比原鏈主網(wǎng)中,在獲取交易和區(qū)塊頭等摘要的過程中使用的哈希算法是算法,而在國密測(cè)試網(wǎng)中,使用算法替代。啟動(dòng)的是國密測(cè)試網(wǎng)??梢哉f,比原鏈的項(xiàng)目進(jìn)展伴隨著國密測(cè)試網(wǎng)的發(fā)布更上一層樓。 比原項(xiàng)目倉庫: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 國密算法是指國家密碼管理局制...

    王巖威 評(píng)論0 收藏0
  • 業(yè)內(nèi)首個(gè) React Native轉(zhuǎn)信小程序引擎 Alita 正式發(fā)布

    摘要:得益于運(yùn)行階段處理邏輯的設(shè)計(jì),支持將使用的應(yīng)用轉(zhuǎn)換成微信小程序。我們也在考察這一新的跨端方案和微信小程序融合轉(zhuǎn)化的可行性。 作者:京東ARES多端技術(shù)團(tuán)隊(duì) 前言 Alita是一套由京東ARES多端技術(shù)團(tuán)隊(duì)打造的React Native代碼轉(zhuǎn)換引擎工具。它對(duì)React語法有全新的處理方式,支持在運(yùn)行時(shí)處理React語法,實(shí)現(xiàn)了React Native和微信小程序之間的主要組件對(duì)齊,可以用...

    陸斌 評(píng)論0 收藏0
  • 信小程序資源匯總

    awesome-github-wechat-weapp 是由OpenDigg整理并維護(hù)的微信小程序開源項(xiàng)目庫集合。我們會(huì)定期同步上的項(xiàng)目到這里,也歡迎各位 UI組件開發(fā)框架實(shí)用庫開發(fā)工具服務(wù)端項(xiàng)目實(shí)例Demo UI組件 weui-wxss ★1873 - 同微信原生視覺體驗(yàn)一致的基礎(chǔ)樣式庫zanui-weapp ★794 - 好用易擴(kuò)展的小程序 UI 庫wx-charts ★449 - 微信小程...

    Olivia 評(píng)論0 收藏0
  • 擴(kuò)展信小程序框架功能

    摘要:擴(kuò)展微信小程序框架功能是狀態(tài)容器,提供可預(yù)測(cè)化的狀態(tài)管理。擴(kuò)展微信小程序框架功能日期時(shí)間是一個(gè)的日期時(shí)間處理工具類,其對(duì)于的日期時(shí)間處理功能非常強(qiáng)悍和全面。 通過第三方 JavaScript 庫,擴(kuò)展微信小程序框架功能。 擴(kuò)展微信小程序框架功能(1)——Promise ES6 對(duì) Promise 有了原生的支持,但微信開發(fā)者工具更新版本(0.11.112200)后, 移除了開發(fā)者工具...

    marek 評(píng)論0 收藏0
  • 記錄一下自己的春招,唯品會(huì)、360、京東offer已收、騰訊offer_call已達(dá)!??!

    摘要:春招結(jié)果五月份了,春招已經(jīng)接近尾聲,因?yàn)榈搅酥芪逋砩蟿偤糜锌?,所以?jiǎn)單地記錄一下自己的春招過程。我的春招從二月初一直持續(xù)到四月底,截止今天,已經(jīng)斬獲唯品會(huì)電商前端研發(fā)部大數(shù)據(jù)與威脅分析事業(yè)部京東精銳暑假實(shí)習(xí)生的騰訊的是早上打過來的。 春招結(jié)果 五月份了,春招已經(jīng)接近尾聲,因?yàn)榈搅酥芪逋砩蟿偤糜锌眨院?jiǎn)單地記錄一下自己的春招過程。我的春招從二月初一直持續(xù)到四月底,截止今天,已經(jīng)斬獲唯品...

    freewolf 評(píng)論0 收藏1

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<