前端利用jsencrypt.js進行RSA加密示例詳解
引言
最近有用到j(luò)sencrypt來對登錄密碼進行rsa加密處理,記錄下來,供自己以后查閱。
什么是RSA加密
RSA加密算法是一種非對稱加密算法,RSA加密使用了"一對"密鑰.分別是公鑰和私鑰,這個公鑰和私鑰其實就是一組數(shù)字!其二進制位長度可以是1024位或者2048位.長度越長其加密強度越大,目前為止公之于眾的能破解的最大長度為768位密鑰,只要高于768位,相對就比較安全.所以目前為止,這種加密算法一直被廣泛使用.
RSA加密與解密
- 使用公鑰加密的數(shù)據(jù),利用私鑰進行解密
- 使用私鑰加密的數(shù)據(jù),利用公鑰進行解密
RSA秘鑰生成方式
Mac系統(tǒng)內(nèi)置OpenSSL(開源加密庫),所以可以直接在終端上使用命令。
Windows系統(tǒng)可以使用git命令行工具
- 單擊鼠標右鍵——git bash here 調(diào)出git bash
- 生成私鑰,密鑰長度為1024bit
$ openssl genrsa -out private.pem 1024 Generating RSA private key, 1024 bit long modulus (2 primes) ...+++++ .............................+++++ e is 65537 (0x010001)
- 從私鑰中提取公鑰
$ openssl rsa -in private.pem -pubout -out public.pem writing RSA key
- 這樣就生成了private.pem 和 public.pem兩個文件,可以利用終端進行查看
$ cat private.pem -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDNNorgFngK1zjHOnQlIUh5NjOxZIiEPZ8Knu6B/IyY0LBRToo1 TZC7/nK6j8on/2sBdv5nFuTwlOpW9UL8C4yZJdjTwYXn5X+wZZsz1RXNI5zjhSXu GeYzF7WhxusKo6zrR6b0IMNg2W016PWU3UkjOXxoaIGkMN77oIorPP5bHQIDAQAB AoGABOdOvjgLOkcWRjxxVgnLj4nqBk0erfpC+J//lv+P5H7oF6lGyCtIUBWubCLP c9E4n1pWjeQQKGeGiflmVlt4So2UPQJD/fvpmT0lswaud+ObbUtFIo4CApHMXdTB jIC/nDSdFut2Yd32N8OH/QYnzAS1tarLGjk3x+Dg5nY3VEECQQDvM7GLXT2df85I X+FBX9YiwUPXqciUJp3XdBOngsyENOFu0C3/cBTxvaiKkMXVPqMjOdoCAY+hz/k1 xPUVBpZ5AkEA25/Objru9LI1XSj8M1gJoIUpiR+mJysN7Q7wWbSK6DI+Hz95NQ5r kAzG89lwMW3dLycH8VPGsWMuxjA7NG0QxQJBAIxDxdKxJFZdAXuTLaWGKy1KIxwt pT6qvlf+6x+JJaBI2gB+9toYwU9YJaLLbhazmjonzFzsyWrbZ4lOK2De8hECQQCl uJRgAQBGjCJQRZjodUnuYgzRd5w8efRsKJWcWutmAmN12MNxEYyAieOmJTDPW4NH DUClDP4k5B5rVgGWsaWxAkA4m0bHwiPqO4/Yz6eyl2jYvljtmqr7KZFXrlsBUrIm XXaTuMdsOmLlp/u078XFw0N+RaUWxbE6ATH7mTGjB2nV -----END RSA PRIVATE KEY----- $ cat public.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNNorgFngK1zjHOnQlIUh5NjOx ZIiEPZ8Knu6B/IyY0LBRToo1TZC7/nK6j8on/2sBdv5nFuTwlOpW9UL8C4yZJdjT wYXn5X+wZZsz1RXNI5zjhSXuGeYzF7WhxusKo6zrR6b0IMNg2W016PWU3UkjOXxo aIGkMN77oIorPP5bHQIDAQAB -----END PUBLIC KEY-----
利用工具網(wǎng)站在線生成秘鑰
jsencrypt介紹
jsencrypt就是一個基于rsa加解密的js庫
使用方法
- 安裝
npm install jsencrypt
- 引入
import JSEncrypt from 'jsencrypt'
- rsa加密
var encryptor = new JSEncrypt() // 創(chuàng)建加密對象實例 //之前ssl生成的公鑰,復制的時候要小心不要有空格 var pubKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQAB-----END PUBLIC KEY-----' encryptor.setPublicKey(pubKey)//設(shè)置公鑰 var rsaPassWord = encryptor.encrypt('要加密的內(nèi)容') // 對內(nèi)容進行加密
- rsa解密
var decrypt = new JSEncrypt()//創(chuàng)建解密對象實例 //之前ssl生成的秘鑰 var priKey = '-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQABAoGBAKYDKP4AFlXkVlMEP5hS8FtuSrUhwgKNJ5xsDnFV8sc3yKlmKp1a6DETc7N66t/Wdb3JVPPSAy+7GaYJc7IsBRZgVqhrjiYiTO3ZvJv3nwAT5snCoZrDqlFzNhR8zvUiyAfGD1pExBKLZKNH826dpfoKD2fYlBVOjz6i6dTKBvCJAkEA/GtL6q1JgGhGLOUenFveqOHJKUydBAk/3jLZksQqIaVxoB+jRQNOZjeSO9er0fxgI2kh0NnfXEvH+v326WxjBwJBALfTRar040v71GJq1m8eFxADIiPDNh5JD2yb71FtYzH9J5/d8SUHI/CUFoROOhxr3DpagmrnTn28H0088vubKe8CQDKMOhOwx/tS5lqvN0YQj7I6JNKEaR0ZzRRuEmv1pIpAW1S5gTScyOJnVn1tXxcZ9xagQwlT2ArfkhiNKxjrf5kCQAwBSDN5+r4jnCMxRv/Kv0bUbY5YWVhw/QjixiZTNn81QTk3jWAVr0su4KmTUkg44xEMiCfjI0Ui3Ah3SocUAxECQAmHCjy8WPjhJN8y0MXSX05OyPTtysrdFzm1pwZNm/tWnhW7GvYQpvE/iAcNrNNb5k17fCImJLH5gbdvJJmCWRk=-----END RSA PRIVATE KEY----' decrypt.setPrivateKey(priKey)//設(shè)置秘鑰 var uncrypted = decrypt.decrypt(encrypted)//解密之前拿公鑰加密的內(nèi)容
目前的應(yīng)用場景是在用戶注冊或登錄的時候,用公鑰對密碼進行加密,再去傳給后臺,后臺用私鑰對加密的內(nèi)容進行解密,然后進行密碼校驗或者保存到數(shù)據(jù)庫。
參考文章
以上就是前端利用jsencrypt.js進行RSA加密示例詳解的詳細內(nèi)容,更多關(guān)于前端jsencrypt.js RSA加密的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
next.js源碼解析getStaticProps?getStaticPaths使用場景
這篇文章主要為大家介紹了next.js源碼解析getStaticProps?getStaticPaths使用場景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08JS前端宏任務(wù)微任務(wù)及Event Loop使用詳解
這篇文章主要為大家介紹了JS前端宏任務(wù)微任務(wù)及Event Loop使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07詳解Anyscript開發(fā)指南繞過typescript類型檢查
這篇文章主要為大家介紹了詳解Anyscript開發(fā)指南繞過typescript類型檢查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09