由於前幾天有朋友問我rsa的使用方式,便花了一些時間去看了一下文件自己做了一下前端和node端非對稱性加密由來:由於表單提交的資料用f12或其他抓包工具可以看的一清二楚,所以前端在處理表單提交的時候會要求使用rsa/md5等類似的加密工具加資料加密後再上傳
用到的類庫: node-rsa
加密、解密分別需要不同的秘方你有兩把鑰匙,你給了我一把鑰匙和乙個帶鎖的箱子,我把資料放進箱子交給你,你用另一把鑰匙開啟鎖開啟箱子拿到資料
你給我的鑰匙和你自己保留的鑰匙不一致,開箱子必須用你那把鑰匙,不同key,非對稱性加密
前端**(非對稱性加密)
實現邏輯我們來看**
import nodersa from 'node-rsa'
...// vue提交表單
submitform(formname) )
.catch(err => );
}// 對資料進行加密,並獲得加密後的資料
const entryptdata = this.entryptdata(this.models)
// 拿到加密後的資料呼叫登入介面
await rsalogin(
entryptdata,
).then(res => )
// ... do something
}).catch(err => )
} else
});},
entryptdata(props) )
// 匯入公鑰
rsakey.importkey(this.publickey)
console.log('資料物件加密前:', props)
const afterencrypt = object.keys(props).reduce((init, key) => , {})
console.log('資料物件加密後:', afterencrypt)
return afterencrypt
},
到這裡,我們就加密好了資料
node實現
實現邏輯
const pojo = require('../../helper/pojo')
const = pojo
const nodersa = require('node-rsa')
let mykey = ;
const initkey = () => ); // 生成新的512位長度金鑰
// 如果被初始化過就是解密需要的步驟
if (mykey.isinit)
// 新生成的物件,保留公鑰和私鑰
const publicder = key.exportkey('public'); // 公鑰
const privateder = key.exportkey('private'); // 私鑰
mykey = }
// 獲取公鑰的介面
const getkey = async ctx =>
// 返回publickey給前端
res = success(mykey.publickey)
ctx.body = res
} catch (err) }
// 登入介面
const login = async ctx =>
} else , {})
// 呼叫真正的登入介面
// do something
}ctx.body = res
} catch (err) }
module.exports =
完整的**和專案在這裡:前端、node端 node應用授權 RSA非對稱加密授權
安裝依賴包 npm i node rsa生成rsa公私鑰對 const nodersa require node rsa function createkey 生成512位金鑰 const re begin end s s skey n r g 這裡對格式進行正則處理方便存表,也可以不處理選擇其他方...
資料層與應用層分離
比如將資料庫查詢打包到乙個cdatabase類中,把查詢到的資料顯示到乙個列表控制項時,只要呼叫cdatabase類的乙個成員函式cdatabase initlistctrl clistctrl 在呼叫時,將目標的列表控制項的指標作為引數提供,在cdatabase initlistctrl clis...
網路層協議與應用
1.ip資料報格式 版本 ipv4 首部長度 ip包頭部長度,因為長度可變,因此需要定義 優先順序與服務型別 提供三層的qos 總長度 ip資料總長度 識別符號,標誌,段偏移量 上層來的資料到ip層被分片,這幾個字段用來對資料報進行標識,使資料到達目的端重組的時候,不會亂序.ttl 為了防止乙個資料...