參考jsrsa簽名實現
參考:https://www.jianshu.com/p/78821648d6ff
應用庫: http://kjur.github.io/jsrsasign/
github: https://github.com/machinewu/jsrsasign
這個是由前端用私鑰簽名,後端用公鑰驗證的過程。
前端生成隨機的32位隨機數,然後用私鑰加密,然後轉成base64格式,這些方法都在jsrsasign中有對應方法,官網中有說明。
這個前端的加密簽名過程用了我一天的時間,崩潰到懷疑人生啊!!
主要參考是第二個,雖然是vue的,但是講解比較清楚。
爲什麼一個加密過程花費了我一天的時間!總結了下
1. 還是對加密解密的一些概念不懂,leader給了一個私鑰“MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAgDR9FwK5Je5TNE8KP2X5j7VUP1ioWs2mSNk+mWWbYTQ3AXfLPPdRhHFCVfBfmFopc3azL+9l9YMqaYfV+uyEZQIDAQABAkB76T9VtC4a+SO2FQbEi90PBqUsrJXbXZRwKHiWblwlL5n5DaFmqBTGU1ZsZxW17vQss254Om4Ct97DHCAYVjhBAiEA4LGn6nyXW1AcVRkBibZV3EYKOqoNsQb9tR3EE4clW0kCIQCSEUhhB3fEzpK1/8c2Lk1ty03zzL4bmULfJfj7YTOkPQIgSYR3P3bCgyMEEifbY/afwzG7eRRY5Ho4GsGBfS4z39kCIAnIOIWu/1lh0Dd6ErhRL4RL2kOakZy9jdnt7BfBsbitAh89IAnbzwvHMSeSCv3eXzh+NgQHQeUJD7EVcm7BD0pl”,我直接就去庫中找api,可是忽略了蜜月需要帶有‘—–BEGIN PRIVATE KEY—–’以及相應的尾標識。
2. 然後開始不知道PCK#8和PCK#1,雖然現在也不知道。。。不過仔細看官網的api說明還是可以摸索到正確答案的。
3. 就是一直驗證不通過我開始用
sig.updateHex(uuid);其實應該用
4. 最後獲取簽名的時候用sig.sign()而不是sig.hSgin或者別的其他
5. 給後端傳簽名的時候,加號沒有了,然後就用了encodeURICompoent來轉碼,後端解碼,done!
注意: