• Vue RSA加密和解密


      接到一个需求,需要对我们的密码进行加密,然后再传输。以前搞过,但是不是Vue中的。现在用Vue弄一遍,大致的思路是一样的。如果你还不了解什么是RSA的话,可以看看这个这个。话不多说,首先是安装

    1 npm i jsencrypt -D
    2 npm i encryptlong -S //encryptlong是基于jsencrypt扩展的长文本分段加解密功能

    安装完成之后,需要创建一个rsa.js,为了是方便咱们使用和以后的管理操作。生成一对公钥和密钥

     1 // 密钥对生成 http://web.chacuo.net/netrsakeypair
     2 // 公钥key
     3 const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
     4     '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
     5 // 私钥key
     6 const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
     7     'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
     8     'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
     9     '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
    10     'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
    11     'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
    12     '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
    13     'tTbklZkD2A=='

    然后方法的话,其实是一样的

     1 export default {
     2     /* JSEncrypt加密 */
     3     rsaPublicData(data) {
     4         var jsencrypt = new JSEncrypt()
     5         jsencrypt.setPublicKey(publicKey)
     6         // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
     7         var result = jsencrypt.encrypt(data)
     8         return result
     9     },
    10     /* JSEncrypt解密 */
    11     rsaPrivateData(data) {
    12         var jsencrypt = new JSEncrypt()
    13         jsencrypt.setPrivateKey(privateKey)
    14         // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
    15         var result = jsencrypt.encrypt(data)
    16         return result
    17     },
    18     /* 加密 */
    19     encrypt(data) {
    20         const PUBLIC_KEY = publicKey
    21         var encryptor = new Encrypt()
    22         encryptor.setPublicKey(PUBLIC_KEY)
    23         // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
    24         const result = encryptor.encryptLong(data)
    25         return result
    26     },
    27     /* 解密 - PRIVATE_KEY - 验证 */
    28     decrypt(data) {
    29         const PRIVATE_KEY = privateKey
    30         var encryptor = new Encrypt()
    31         encryptor.setPrivateKey(PRIVATE_KEY)
    32         // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
    33         var result = encryptor.decryptLong(data)
    34         return result
    35     }
    36 }

    写完之后,还需要把这个方法注册成为全局的方法,这个时候,需要再main.js中添加下面的话

    import Rsa from "@/utils/rsa.js"
    Vue.prototype.Rsa = Rsa // 将Rsa注册为公共方法,方便其他页面调用

    然后就可以使用了。

     1 <template>
     2     <div class="">
     3         <p></p>
     4         <el-input v-model="rasEncryptData.reqStr" placeholder="请输入内容"></el-input>
     5         <el-button icon="el-icon-search" circle @click="reqTest"></el-button>
     6         <el-row>
     7             <el-col :span="24"><div class="grid-content bg-purple">加密的数据:<p>{{rasEncryptData.encryptStr}}</p></div></el-col>
     8             <el-col :span="24"><div class="grid-content bg-purple-light"></div>解密的数据:{{rasEncryptData.decryptStr}}</el-col>
     9         </el-row>
    10     </div>
    11 </template>
    12  
    13 <script>
    14 export default {
    15   data() {
    16     // 定义数据
    17     return {
    18       rasEncryptData: {
    19         // 加密后数据
    20         reqStr: "", // 加密前数据
    21         encryptStr: "", // 加密后数据
    22         decryptStr: "" // 解密后数据
    23       }
    24     };
    25   },
    26   methods: {
    27     // 定义方法
    28     reqTest() {
    29       this.rasEncryptData.encryptStr = this.Rsa.encrypt(
    30         this.rasEncryptData.reqStr
    31       ); // 加密
    32       this.rasEncryptData.decryptStr = this.Rsa.decrypt(
    33         this.rasEncryptData.encryptStr
    34       ); // 解密
    35     }
    36   },
    37   mounted() {
    38     // 此时已经将编译好的模板,挂载到了页面指定的容器中显示
    39   },
    40 
    41 };
    42 </script>
    43 <style lang="scss" scoped>
    44 p{
    45     word-break: break-all;
    46 }
    47 </style>
  • 相关阅读:
    div布局的几点体会
    DIV高度的问题
    想修改CSS
    如何在EXCEL SHEET中 动态添加控件
    div的背景设置的问题
    CSS的资源
    远程调试
    Javascript跨域访问解决方案 Leone
    再谈PHP开发者常犯的10个MySQL错误 Leone
    开发人员需要熟知的常用Linux命令之八:Version、Kernel查看 Leone
  • 原文地址:https://www.cnblogs.com/daniao11417/p/15638182.html
Copyright © 2020-2023  润新知