『壹』 jsencrypt實現前端RSA非對稱加密解密(vue項目)
最近一個vue項目要求所有密碼數據需要使用RSA非對稱加密傳輸,以為挺簡單,結果開發過程中還是遇到了些問題,簡單做個筆記。同時也希望可以幫助到遇到同樣問題的道友門。
重點來了:使用jsencrypt實現RSA非對稱加解密
因為這里直接在前端加解密,所以需要一對現成的密鑰,我們通過 密鑰在線生成器 得到:
然後在需要使用的文件中引入JSEncrypt,我是將所有工具函數都封裝在一個js文件的,我就直接在該文件中引入,我看也有人是在main.js中引入的。
到這里我們的加密解密方法就完成了,在需要的地方直接拿過來用就好了!
大功告成!這樣就完了?我以為這樣就ok了。
當然,如果沒有遇到這個bug,就可以忽略下面的內容了。
從上面截圖可以看到,重啟項目的時候報錯: navigator is not defined
而且這個bug有點奇葩,先啟動項目再引入jsencrypt就什麼問題都沒有,但是先引入jsencrypt再啟動項目就報錯。這也是我前面能順利執行的原因所在。
通過好一通折騰,用了網上的各種方法,比如在main.js引入jsencrypt、引入jsdom之類的,都沒能解決這個問題,最終還是在jsencrypt的git相關 issue 下找到了這個問題的解決方案。
到這里問題就算基本解決了,但是由於項目組不止我一個前端,我不能要求每個同事或者以後接手維護項目的同事都要在node_moles中去替換文件。
所以就採用了另外一種方案:將jsencrypt.js通過在線js壓縮器壓縮至jsencrypt.min.js中,然後把jsencrypt.min.js放到src/assets/jsencrypt文件夾中,就不用npm install的方式了。
換了種方式,jsencrypt的引用方式需要做出相應的調整:
參考鏈接: RSA非對稱加密傳輸---前端加密&解密(VUE項目)
https://github.com/travist/jsencrypt/issues/144
PS:才疏學淺,如果有考慮不周之處或者有更好的解決方案,歡迎指正探討!
『貳』 vue把密鑰保存哪裡安全
首先:密鑰直接明文寫在代碼里是肯定不可取的!
將密鑰保存在文件中,如果是伺服器端的話,沒什麼大問題,你也可以直接將密鑰寫在代碼里。
不存儲密鑰,使用隨機密鑰,每次加密的時候的密鑰都不一樣,需要考慮的就是解密時怎麼取到生成的密鑰。可以加一些數據來生成密鑰,比如用戶名、用戶密碼什麼的。4.使用系統提供的密鑰容器,進行存儲密鑰,現在操作系統這么多,存儲容器的使用就自己去查看相關操作系統的文檔吧。
可以使用電子證書,當然證書你可以存儲在操作系統的密鑰容器上,或者其它介質中,看你的需要咯。
加強密鑰,就是使用多種加密演算法,把數據多加密幾次,把密鑰也加密了。這樣的話就是涉及到加密密鑰的密鑰要存儲在哪。
『叄』 軟體公司要如何保障源代碼的安全不會被外泄,不會被員工泄漏
先回答你的問題,然後擴展開說說我的看法。 有些公司是這樣做的:為工作場所劃分保護級別。 為每台伺服器和計算機定義保護級別,並制定相應保護級別下的保護策略,包括授權和訪問方法。 將場所分為工作區和上網區,工作區不連外網,上網區是員工共享的非專用機。 封閉所有計算機的外部介面,比如USB口、光碟機沒有刻錄功能、disable藍牙,不允許計算機和U盤或手機等外設交換數據。 所有對外發的數據統一由高層來介面審核。所有計算機安裝後台監控軟體,監控操作行為。 普通員工不配置筆記本電腦。 辦公空間安裝攝像頭監視異常行為。 和員工簽署保密協議。等等上面的措施的確能起到一定保護作用,但是不能保證絕對不發生問題:公司開展業務必然要和外部進行信息交流,即使在硬體上做到了上述這些,如果真有居心不良的員工,那麼只是增加了作案的難度,只要能上網,想把信息傳到外部還是有辦法的,比如把想竊取的信息通過編碼的方式打包到正常外發的文件里。 可以在攝像頭死角的地方,暴力破壞計算機,或者把計算機硬碟拆下來拿回去研究。 最不濟還可以把核心代碼寫到筆記上,你總不能不讓員工寫讀書筆記吧。 互聯網公司產品的很多代碼都是基於開源框架演化來的,有些開源許可是基於GPL的,是要求其衍生物是免費開放源代碼的。雖然有很多公司會取巧地繞開這個限定條件。 對於游戲公司,設計、策劃、代碼的保護是蠻重要的,因為開發期的游戲設計一旦外漏,很可能就失去了市場先機。 照我看,除了專用演算法、特定的格式保護、極少數產品本身固有的設計、某些特殊行業(比如網游)之外,很多代碼都是通用的,可開放的。有以下一些建議:清晰自己所在的行業特點,對代碼外泄做個風險評估,確定保護代碼安全的思路和策略; 劃分核心代碼和非核心代碼,分別制定保護策略; 在核心代碼上下功夫,能接觸這些代碼的人一定是可以信任的人,盡可能地少,但也要考慮備份人選; 把核心代碼做成編譯好的庫供程序調用,這樣就能降低核心代碼泄漏的風險; 員工入職簽署保密協議; 選拔高層注重品德和忠誠度,簽訂競業保護協議; 最後公司領導要有一個開放心態,正因為有開源的出現,才促進了計算機軟體的發展,固守著自己的一畝三分地,早晚要被對手超越。想在競爭中脫穎而出,首先要去除管理者的保守心態。開放、公平競爭才讓公司更有底氣和信心。