node應用授權 RSA非對稱加密授權

2022-09-18 23:00:13 字數 1966 閱讀 2214

安裝依賴包

npm i node-rsa
生成rsa公私鑰對

const nodersa = require('node-rsa')

function

createkey() ) //

生成512位金鑰

const re = /(-----(begin|end)\s\s*\skey-----)|[\n\r]/g //

這裡對格式進行正則處理方便存表,也可以不處理選擇其他方式儲存 如:.pem檔案格式儲存金鑰

return

}console.log('rsakey:', createkey())

/*rsakey:

*/

公鑰加密

const nodersa = new nodersa(pubkey, 'pkcs8-public')

const encryptstr = nodersa.encrypt(new date().gettime(), 'base64') //

比如擬個 encryptstr 字段,獲取當前時戳(1642561750840)並加密賦值給它 發給服務方

私鑰解密服務方 接收到 加密引數(encryptstr)、應用標識,並進行解密

const prikey = new nodersa(prikey, 'pkcs8-private') //

配置表通過該 應用標識(一般uuid隨機字串或表id)得到對應 私鑰

const decryptstr = prikey.decrypt(encryptstr, 'utf8') //

並通過該 私鑰(prikey) 解密得:1642561750840

-----------------附-------------------

可能遇到的問題:

1. 應用方 通過url query傳參base64密文,服務方 接收時 『+』 變 空格 ?

=> 服務方 替換空格為『+』之後再解密 encryptstr.replace(/\s/g, '+')

2. uuid生成應用標識

const uuid = require('uuid') //

npm i uuid

//隨機uuid

function

uuidv4()

console.log('uuid:', uuidv4()) //

uuid: 9289369802684e0cbc57c1001ab9bc27

view code

返回值場景:

1. 應用已授權

2. 授權已到期

4. 應用授權失敗:解密失敗、本次授權過期(通過時戳,設定應用本次 授權過期 時間)

響應結果

參照表:

`id` bigint(20) not null auto_increment comment '應用授權配置id',

`auid` varchar(255) default null comment '應用標識',

`validtime` datetime default null comment '有效期',

`creator` varchar(255) default null comment '授權人',

`createtime` datetime default null comment '建立時間',

`updatetime` datetime default null comment '修改時間',

primary key (`id`) using btree

) engine=innodb auto_increment=2 default charset=utf8 comment='應用授權配置';

應用授權配置表

Crypto 應用 非對稱加密RSA

1,非對稱加密rsa 1 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人都可以獲得,私鑰則是保密的。2 甲方獲取乙方的公鑰,然後用它對資訊加密。3 乙方得到加密後的資訊,用私鑰解密。2,使用cryptopp實現rsa cryptopp是一套非常完整的加密解密開源解決方案,如何使用這裡就不多說了,...

RSA非對稱加密

現實網路中,web應用的開發少不了需要對敏感資訊來進行加密,但是加密又不能草草了事,過於簡單。一旦被鑽了空子,就成了事故。比如密碼。之前用到了非對稱加密沒做記錄,這次又用到了,所以記錄下來!rsa是目前最有影響力的公鑰加密演算法,該演算法基於乙個十分簡單的數論事實 將兩個大素數相乘十分容易,但那時想...

RSA非對稱加密

對稱加密 演算法 在加密和解密時使用的是同乙個秘鑰 而 非對稱加密演算法 需要兩個 金鑰 來進行加密和解密,這兩個秘鑰是 公開金鑰 public key,簡稱公鑰 和私有金鑰 private key,簡稱私鑰 與對稱加密 演算法 不同,非對稱加密演算法 需要兩個 金鑰 公開金鑰 publickey ...