您的位置:首页 > Web前端 > JavaScript

Javascript当中的RSA加解密

2018-01-10 09:19 447 查看


最近一直在玩儿Vue。讲真,前端不是我的强项。不过项目需要,也就只好边学边用。一段时间下来,感觉前端也挺好。

老实说,这个博客大概有大半年没有更新过了,杂草大概长了好几米罢。这次写博,主要还是来源于SF上的一个问答。题主大致的意思是后端传了public key,前端需要使用RSA来加密数据。

对于我这种不善前端、前端水平烂到爆表的基佬,自然会谷歌一番解决方案。于是,搜索出了travist/jsencrypt@Github。起先,我是直接将这个丢在了答案区域。不料题主在使用的过程当中大概是踩了一些坑,于是追问了。

事实上,当前距离题主追问已经有好些天了,这里也不知道题主的问题有没有得到解决。闹太套,在经过实践只好,还是准备将其贴到这里,权
4000
当做个笔记。

项目构建什么的,这里不废话,我的实际项目使用的是
vue
 + 
webpack
,同时包管理使用的是
yarn


首先,自然是需要引入
jsencrypt
,超级简单。
1
yarn add jsencrypt
然后,需要
import
到项目当中来
12345
// 很重要!!!这里不是直接引入jsencryptimport JsEncrypt from 'jsencrypt/bin/jsencrypt'// 将jsencrypt压入到VueVue.prototype.$jsEncrypt = JsEncrypt
生成密钥、和公钥
1234567
// 私钥openssl genrsa -out rsa_1024_priv.pem 1024// cat rsa_1024_priv.pem 读取私钥内容// 公钥openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem// cat rsa_1024_pub.pem 读取公钥内容
开发的时候使用到了
vue
的组件,我们在组件中使用就会有类似下面的代码
12345678910111213141516171819202122232425262728293031323334353637
// 实例化一个JSEncrypt对象let jse = new this.$jsEncrypt.JSEncrypt()jse.setPublicKey(`-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ygMKjJLSUpnfXqt8lRSAdDxAHWKi9GbTFkCbAjkRCR6VUakxxXLXHQUtPCizKcvNpuYqZ5bO8LEgpY7SL3JEdEI9OuMnZ6ToeHPfcHeS+EgN0oYmdQ49RB5wZkcBEFk80OBEAM6VhnE0IuHGkU5ko9oPHq3boEQ3Ej6r3T+UhQIDAQAB-----END PUBLIC KEY-----`)// 设置需要加密的字符串let encrypted = jse.encrypt('Hello, world')// 输出加密结果console.log(encrypted)// 设置密钥jse.setPrivateKey(`-----BEGIN RSA PRIVATE KEY-----MIICXgIBAAKBgQC8ygMKjJLSUpnfXqt8lRSAdDxAHWKi9GbTFkCbAjkRCR6VUakxxXLXHQUtPCizKcvNpuYqZ5bO8LEgpY7SL3JEdEI9OuMnZ6ToeHPfcHeS+EgN0oYmdQ49RB5wZkcBEFk80OBEAM6VhnE0IuHGkU5ko9oPHq3boEQ3Ej6r3T+UhQIDAQABAoGBAIO8JwEedHlE4FBovBsT4Bl+gmhu2NxC1NlpBq3jkDSd+3RQZlLvp6IJgwo8l13lxWv8kVF3tVkzxTW1sQJjz0RYShH8vXLl94gf6mFkJbeOPP6uA0mGDG81yINwKUpE0RM6ZM9yKEeVdK3u67TkEBcC6Td5KBl8Yof3q7qxiOWhAkEA4BXEtpnfhgm37s1VjDxdIHTtWL1PihMT+SCOqp+Vv27ABVrxtDW/w2R3ZzR5ezROI2v1DVhj5wvsxPGXx6OpSQJBANetVvazS/5SQNvb+Cmjw9Rt5NilyxfX5IsSswaIojbwhZY2FVZyAlFH9K/YS2FYFyU7iIqN6IIkOxXpOcj/bV0CQQCRYM4MgWuotClmfkSgBJGOew144uj1dUch+2NTgtFOLvXZA5WICs7sXwOwKzUdH2QKSwHitJOr0+q6ItsLpDwxAkBXzvDK+/CCmIZjfMkqWsxN3nf/ZHCtQm5/2Jsem94/M+mPYHGLgltDMGKEfTEjbrPtqrFKh8ATzCBqKUwncybZAkEAmVNW1dftWWoriZZXXMvfFkTDgYvRmytoVEThhnd0J/AOhZiUAs9+kHfGKivlTE209AY6Bw8aRzuTCziSwQhhBQ==-----END RSA PRIVATE KEY-----`)// 解密加密过的字符串let decrypted = jse.decrypt(encrypted)// 打印结果console.log(decrypted)
事实上超级简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: