1. 程式人生 > >微信小程式-RSA簽名、驗籤、加密、解密

微信小程式-RSA簽名、驗籤、加密、解密

title: 【小程式】RSA簽名
type: categories
date: 2017-05-27 17:01:15
categories: 小程式

tags: [RSA, 簽名]

一個適用於微信小程式的RSA簽名加密庫。

使用

1、引入檔案

var RSA = require('../../utils/wxapp_rsa.js')

2、呼叫

var privateKey_pkcs1 = '-----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQCk7WKdggwBOtteLL5sPom8RYCjuw0hy6R1jH39tCaep1Dns02bi4CYHk2dSR / t0ABgF5pHYeMxHa74Dp6Z6SjfAKMUu53BbTR615ehK + 03BjtzJzviTF1 / NtLmGaR3aawrDp7oQgq33dfIYbWLuAMkHNiWaoXaGyHh3a8jS2vxfQIDAQABAoGAIKRnLzts + tVWU5ZRfgUGp7 + tzToZSEYQ378VtJ / yQNZmueUQCCgdJH5i6C1v51aSrHIfc99Y4wC3/ 5qNI3M1RlRpIakmcaiEv1m6huDPLKFq6Y1e+ AZ0Cb0xo3bny + VTOvfGgcAdSa6++K47bGaxyKzwGeNZQkltm5sgbVcKvkECQQDVjWbSU8P8nDb+TP5Aqr + DaMVA425wv2ra2jhxd6KqKxgHHB7yYWlODiYNrtALOEG9zfSpHVQWhZpiKq8XcWwRAkEAxbWzPAqZxaZ / XTs65uCL0 + iqif0qCSDUNis61wYm2UwOh4LqBZIFop94B3ybEXbCvUl0v26H0fgXjFUErvlKrQJBAKjbAe5U5accLi + t2WxwlrXlZfME4hKsiGU8H10455n+ MSWOCrpEY + ugLF6tVztH5FOcQlRmKFMWmRf + ACxdNsECQDBjkEKZtZkSbwm6fWgUfSSYRWUQeUFSr52yZuxJrShx3Px9phlG6 + opbY8niCx2DKOXXuObgdJ6DglipYrNqOECQQCndP + zU / jwlvjQzEabKdP05uFc5JV6ySFBQwuoENbEvW3uz + Yz31xDYbrwIzrysVDovlj0ExL6LC + JRvpJmHcN-----END RSA PRIVATE KEY-----'
var publicKey_pkcs1 = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCk7WKdggwBOtteLL5sPom8RYCjuw0hy6R1jH39tCaep1Dns02bi4CYHk2dSR / t0ABgF5pHYeMxHa74Dp6Z6SjfAKMUu53BbTR615ehK + 03BjtzJzviTF1/ NtLmGaR3aawrDp7oQgq33dfIYbWLuAMkHNiWaoXaGyHh3a8jS2vxfQIDAQAB-----END PUBLIC KEY-----' // 加簽
var sign_rsa = new RSA.RSAKey(); sign_rsa = RSA.KEYUTIL.getKey(privateKey_pkcs1); console.log('簽名RSA:') console.log(sign_rsa) var hashAlg = 'sha1'; var hSig = sign_rsa.signString("signData", hashAlg); hSig = RSA.hex2b64(hSig); // hex 轉 b64 console.log("簽名結果:" + hSig) // 驗籤
var verify_rsa = new RSA.RSAKey(); verify_rsa = RSA.KEYUTIL.getKey(publicKey_pkcs1); console.log('驗籤RSA:') console.log(verify_rsa) hSig = RSA.b64tohex(hSig) var ver = verify_rsa.verifyString("signData", hSig) console.log('驗簽結果:' + ver) // 加密 var encrypt_rsa = new RSA.RSAKey(); encrypt_rsa = RSA.KEYUTIL.getKey(publicKey_pkcs1); console.log('加密RSA:') console.log(encrypt_rsa) var encStr = encrypt_rsa.encrypt('123456') encStr = RSA.hex2b64(encStr); console.log("加密結果:" + encStr) // 解密 var decrypt_rsa = new RSA.RSAKey(); decrypt_rsa = RSA.KEYUTIL.getKey(privateKey_pkcs1); console.log('解密RSA:') console.log(decrypt_rsa) encStr = RSA.b64tohex(encStr) var decStr = decrypt_rsa.decrypt(encStr) console.log("解密結果:" + decStr)

需要注意的是:區分RSA私鑰的型別,有pkcs1和pkcs8。pkcs8格式的私鑰主要用於java中。

// pkcs1格式:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY------

// pkcs8格式:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

相關推薦

程式-RSA簽名加密解密

title: 【小程式】RSA簽名 type: categories date: 2017-05-27 17:01:15 categories: 小程式 tags: [RSA, 簽名] 一個適用於微信小程式的RSA簽名加密庫。 使

程式 RSA 加密解密,分段加解密

雖然說微信小程式本身有自己的安全機制,但我們有時候業務需要。需要自己做一層加密,AES比較簡單,就不說了。 這裡說一下RSA非對稱加密。一般網上搜的都不全,要麼就沒有分段加解密。這裡做一下整理,方便大家使用。 主要新增兩個方法: function RSAEncryp

程式表單輸入驗證(手機號郵箱驗證輸入非空)

wxml: <form bindsubmit='formSubmit'> <view class='form'> <text class='label'>姓名<text class='re

程式開發入門第七章:收藏評論點贊及計數功能

    本章內容有一定的難度,但其中的技巧和知識還是很豐富的。本章通過編寫幾乎所有內容型應用都會附帶的“評論”“點贊”“閱讀計數”“收藏”等功能,來學習使用小程式的互動反饋元件、快取的應用、圖片選擇和預覽、遮蔽關鍵字、錄音、拍照以及播放錄音等功能7.1 收藏、評論、點贊、計數

程式rsa分段加密

前段時間公司要開發app配套的微信小程式,而app的介面是使用rsa加密的。 找了很多資料,發現rsa的祕鑰長度限制了加密時明文的長度。又不能重新寫一套介面。糾結了三天,終於集合各方資料弄出了一個微信小程式試用的rsa分段加密程式. 裡面有好幾種加密

程式-合法域名校出錯

微信小程式開發,遇到這個問題怎麼辦? 產生原因是因為發起了wx.request請求 而請求的域名沒有在微信公眾平臺後臺設定。 1.開發者自己手動設定不檢驗 不管你有沒有拿到App ID ,我相信很多人都會和我一樣做一件事,就是二話不說先大概瞭解下文件

程式入門從這裡出發(登入註冊開發工具檔案及結構介紹)

![](http://image.ideal-20.cn/weixin-mini/19-01-01-000.png) # (一) 準備工作 ## (1) 登入註冊 - 註冊賬號:這就不談了,只需要注意使用一個全新的郵箱,別之前註冊過公眾號小程式等就可以了 - `https://mp.weixin.q

程式全棧(一).通過授權登入解密獲取使用者的openid和unionid

    最近做一個微信小程式,有個功能需要甲觸發A事件然後B收到甲的訊息。毫無疑問就是要獲取openid存下來與使用者綁定了。然後可能有公眾號對接進來,於是還是要求一個unionid。這就不可避免要涉及一個獲取流程。    本來我以為是小程式端簡簡單單獲取一下騰訊的介面直接

程式合法域名配置-不校合法域名web-view(業務域名)TLS 版本以及 HTTPS 證書

微信小程式合法域名配置-不校驗合法域名、web-view(業務域名)、TLS 版本以及 HTTPS 證書 很多教程說按照以上方式呼叫即可。但是當我們在程式中實際呼叫以上程式時,就會報錯, http://14.116.211.92:8099 不在以下 request 合法域名列表中,請參考文件

程式臨時開啟開發環境不校請求域名TLS版本及HTTPS證書 選項

使用 wx.request、wx.connectSocket、wx.uploadFile、wx.downloadFile 等方法時,都會涉及到 URL,微信小程式是不允許隨便訪問 URL 的,需要在小程式的“設定”->“開發設定”中,把域名配置進去。 但

程式開發:二級三級等多級聯動選單

二級級聯效果三級聯動效果 二級聯動和三級聯動的程式碼結構都是一樣,就看要怎麼設定。接下來上三級聯動的程式碼。 wxml <view class="picker-box"> <view class='skill-picker'&g

python程式及各種開發者課程視訊

這裡有海量程式開發視訊,從基礎入門到各技術語言進階,共計約1.5T,150元可以給到全部; python視訊從0開始學,從基礎班到就業班,以及Python AI的完整教程,包括基礎必備到高等數學,資料分析與挖掘,機器學習及自然語言處理;可以掃我微信二維碼加微信 廢話不多說,完整

Okam(奧卡姆):程式開發框架,支援百度程式程式支付寶程式

Okam(奧卡姆):小程式開發框架,支援百度小程式、微信小程式、支付寶小程式 Okam 是什麼 `Okam` 一個面向小程式開發的開發框架,開發體驗類 `Vue`。詳情 Okam 對各小程式的支援情況 支援 百度小程式 支援 微信小程式 支援 支付寶小程式 Okam 提供

程式 - 獲取所在位置(省區)

    實現步驟 1. 獲取當前經緯度   2. 呼叫騰訊(百度、高德)地圖對應的請求地址,一般都會有獨一的key, 譬如   騰訊地圖呼叫地址: https://apis.map.qq.com/ws/geocoder/v1/?l

程式的搜尋高亮自定義導航條等踩坑記錄

原文地址:https://oomabc.com/articledetail?atclid=7421fe13daad46389791463f51d3395d   前言我在寫這個部落格的小程式過程中,遇到了很多的問題。之前斷斷續續也寫過不少JavaScript和css,不過都是半吊子。所以在看了一會

基於Taro + Dva構建的適配不同端(程式H5React-Native 等)的時裝衣櫥

前言 Taro 是一套遵循 React 語法規範的 多端開發 解決方案。現如今市面上端的形態多種多樣,Web、React-Native、微信小程式等各種端大行其道,當業務要求同時在不同的端都要求有所表現的時候,針對不同的端去編寫多套程式碼的成本顯然非常高,這時候只編寫一套程式碼就能夠適配到多端的能力就顯得極

程式wx.redirectTowx.navigateTo跳轉失敗

在開發小程式時,用到下面三種頁面跳轉方法,路徑寫對後跳轉沒有反應,也沒報錯。 wx.navigateTo(OBJECT) 保留當前頁面,跳轉到應用內的某個頁面,使用wx.navigateBack可以返回到原頁面。 wx.redirectTo(OBJECT) 關閉當前頁面,跳轉

程式-06 tab選項卡滑動切換與列表Item(scroll swiper)資料的獲取等所用到的都有了

目錄   示例圖片 WXML js WXSS 示例圖片 WXML <view > <scroll-view scroll-x="true" class="tab-h" scroll-left="{{scrollLeft}}

程式-day03-註冊頁面路由(程式頁面跳轉)模組化

1.路由 wx.navigateTo    開啟新頁面 wx.redirectTo      頁面重定向 wx.switchTab      切換 Tab

程式-day02-程式-框架-配置-pageswindowstabBarsdebug(json檔案)

1.pages(頁面路徑列表) "pages":[ "pages/index/index", "pages/do/do", "pages/eat/eat", "pages/logs/logs" ] 2.windows(全域性的預設視窗表現) "window":{