前端加密,后端如何解密?

大家好,最近有看到前端加密,我学了一下。可是问题来了。我前端加密,后端如何解密啊?比如我把加密过后的密码传给后端,后端如何解密呢?我用的是https://github.com/wwwtyro/cryptico,这个加密的JS。根据教程,我是要把那个RSA KEY传给后端吗?然后后端比如php如何解密啊?

1个回答

不知道你为什么要怎么做。
我看了一下,里面是介绍的是一种非对称加密算法,就是RSA。
这个需要有两个密钥,一个是public公开密钥,一个RSA Key私钥

你给的例子中是将明文先通过 公钥密钥进行加密,如果需要在服务端进行解密,服务端需要两个信息
1、私钥
2、加密算法(你去找一个与js加密算法对应PHP的加密函数,这种加密解密算法一般都是一样的)

还需要注意的是,js加密最后输出是经过base64位处理(js函数内部应该封装了一层)的,所以你在服务端先要把密文经过base64解码后,在使用算法解密

CONFESS
CONFESS 哦,那我再看看吧。谢谢了。原理应该都是一样的吧。。。
7 年多之前 回复
iteye_171
iteye_171 不好意思,我是java程序员对php不熟悉。你可以问问其他人:)
7 年多之前 回复
CONFESS
CONFESS 请问一下,为什么我按照官网上写的去下载安装openssl 二进制版的,PHP.ini也进行了更改去除了open_ssl的注释为什么我简单的$privatekey = openssl_pkey_new();这样输出是bool(false)呢?
7 年多之前 回复
CONFESS
CONFESS 非常感谢,我在看相关的说明了。发现RSA,php是用openssl来进行加解密的。现在明白了。谢谢了
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

前端jsencrypt加密,后端无法解密

## 前后端RSA加密 > 在做一个web安全登录的作业时,遇到前后端RSA加密问题。。 1. 后端 java 生成RSA密钥对,privateKey,publicKey 后端RSA是从帖子上抄的: (学习加密四spring boot 使用RSA+AES混合加密,前后端传递参数加解密)[https://blog.csdn.net/baidu_38990811/article/details/83540404] **使用PKCS8规范** ``` // 后端部分代码 RSA /** * 生成密钥对(公钥和私钥) * @return * @throws Exception */ public static Map<String, Object> genKeyPair() throws Exception { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM); keyPairGen.initialize(INITIALIZE_LENGTH); KeyPair keyPair = keyPairGen.generateKeyPair(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); Map<String, Object> keyMap = new HashMap<String, Object>(2); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; } /** * 私钥解密 * @param encryptedData 已加密数据 * @param privateKey 私钥(BASE64编码) * @return * @throws Exception */ public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) throws Exception { byte[] keyBytes = Base64.decodeBase64(privateKey); PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); Key privateK = keyFactory.generatePrivate(pkcs8KeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, privateK); int inputLen = encryptedData.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[] cache; int i = 0; // 对数据分段解密 while (inputLen - offSet > 0) { if (inputLen - offSet > MAX_DECRYPT_BLOCK) { cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK); } else { cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet); } out.write(cache, 0, cache.length); i++; offSet = i * MAX_DECRYPT_BLOCK; } byte[] decryptedData = out.toByteArray(); out.close(); return decryptedData; } ``` 2. 前端:vue+webpack - 从后端获取一个公钥**publicKey** - 使用jsencrypt 和 **publicKey**加密内容,得到String encrypted 3. 后端拿到传回的encrypted, 再解密时报错 ``` javax.crypto.BadPaddingException: Decryption error at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:383) at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:294) at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:363) at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389) at javax.crypto.Cipher.doFinal(Cipher.java:2222) at com.security.loginserver.Util.RSAUtils.decryptByPrivateKey(RSAUtils.java:126) at com.security.loginserver.Util.RSAUtils.decryptDataOnJava(RSAUtils.java:285) ``` ## 测试情况 1. 后端单独测试RSA加密解密,正常 2. 前端单独测试RSA加密解密,使用后端的publicKey和privatekey正常 3. 搜到的贴子说,原因是JSEncrypt使用pkcs1规范,后端java用了**PKCS8规范**,,,然后就无从下手了 4. 求助大佬

如何用C++实现JSEncrypt中的加密

JS中有个JSEncrypt的setPublicKey(key)函数直接加密,我想通过C++实现,虽然看到了源码,字面意思都认识,但是表示还是看不懂。 求大神指教,如何实现C++的加密。这是JSEncrypt的源码http://www.4366.com/s/sdk/jsencrypt.js 用chrome打开结构比较清晰,用360打开就比较乱了。

在JavaScript中加密字符串并使用RSA技术在PHP中解密

<div class="post-text" itemprop="text"> <p>I am trying to encrypt some text in JavaScript and then send it to PHP (etc: with Ajax) to decrypt it there and save it (etc: In MySQL).</p> <p>Here is my code so far:</p> <p><strong>In JavaScript:</strong></p> <p>I am using this library for the encryption: <a href="http://travistidwell.com/blog/2013/02/15/a-better-library-for-javascript-asymmetrical-rsa-encryption/" rel="nofollow">http://travistidwell.com/blog/2013/02/15/a-better-library-for-javascript-asymmetrical-rsa-encryption/</a></p> <pre><code>function ConvertToURL(data) { // Converts data to URL friendly form // etc: Replaces '+', '/', '=' with 'plus', 'slash', 'equal' }; function AjaxOrder(data) { // Sends data in PHP with Ajax } var publicKey = '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76 xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4 gwQco1KRMDSmXSMkDwIDAQAB -----END PUBLIC KEY-----'; var encrypt = new JSEncrypt(); encrypt.setPublicKey(publicKey); var encrypted = encrypt.encrypt('Text to send.'); *// And now I am sending the encrypted text with some Ajax function* AjaxOrder(ConvertToURL(encrypted)); </code></pre> <p><strong>In PHP:</strong></p> <pre><code>$dataPost = $_POST('dt'); function ConvertFromURL($data) { // Converts $data to original form // etc: Replaces 'plus', 'slash', 'equal' with '+', '/', '=' } function ReturnData($data) { // Sends $data back in JavaScript as an answer to Ajax } $privateKey = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd 8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5 rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 -----END RSA PRIVATE KEY-----'; openssl_private_decrypt(ConvertFromURL($dataPost), $decryptedWord, $privateKey); ReturnData(base64_encode($decryptedWord)); </code></pre> <p>Now the answer from PHP is empty every time. Any ideas to make this work?</p> <p>Thank you for your time!</p> </div>

前端js 进行rsa加密的问题

情况大致如下: 1.前端需要对传输内容进行加密 ,采用加密方式为RSA加密 2.从后端能获取的数据 有: 1:RSA 模数 2: 公钥指数 仅仅能获取到这两个 求问: 前端如何计算出 publicKey ?

如何实现js代码MD5加密,传到后台C#中再解密

如何实现js代码对一个字符串进行MD5加密,传到后台C#中再解密成js加密前的字符串

Laravel 5中的加密和解密

<div class="post-text" itemprop="text"> <p>I have been looking for ideas on encrypting and decrypting values in Laravel (like VIN Numbers, Employee ID Card Numbers, Social Security Numbers, etc.) and recently found this on the Laravel website: <a href="https://laravel.com/docs/5.6/encryption" rel="nofollow noreferrer">https://laravel.com/docs/5.6/encryption</a></p> <p>My question is, how would I print the decrypted values on a blade template? I could see going through the controller and setting a variable and then printing it to a Blade, but I was curious as to how I would also print a decrypted value to an index? Like so...</p> <pre><code>@foreach($employees as $employee) {{$employee-&gt;decrypted value somehow}} {{$employee-&gt;name}} @endforeach </code></pre> </div>

国密算法SM2 js加密 java解密不行,谁帮我看下代码,谢谢!

https://pan.baidu.com/s/1n6Uoyvz3Qo9SjZuCU-hdSg 代码在链接里面,我现在遇到的问题是同样的公钥在js加密后,在java代码中使用对应的私钥无法解密

js里的rsa加密 可以用后台的代替吗

网站在jsp里用rsa对帐号密码加密,写爬虫能否不用js的rsa(就是不写jsp登录),直接在后台加密然后传到相应的URL进行登录。

spring security加密后如何解密

我想编辑加密后的用户信,密码加密后字段太长了,我想解密该怎么做。

在Nodejs中加密并在PHP中解密

<div class="post-text" itemprop="text"> <p>I'm trying to decrypt a string in PHP which was originally encrypted in NodeJS.</p> <p>PHP:</p> <p><code>openssl_decrypt($raw_id, "aes-128-cbc", "s7UbmJpfm56r6CAC6mz7KVZdRc3Fxc4m", 0, null)</code></p> <p>This seems to always return<code>false</code>.</p> <p>Encryption in Nodejs:</p> <pre><code>function encrypt(text) { var cipher = crypto.createCipher('aes-128-cbc', 's7UbmJpfm56r6CAC6mz7KVZdRc3Fxc4m'); var encrypted = cipher.update(text, 'utf8', 'hex') encrypted += cipher.final('hex') return encrypted; } function decrypt(text) { var cipher = crypto.createDecipher('aes-128-cbc', 's7UbmJpfm56r6CAC6mz7KVZdRc3Fxc4m'); var decrypted = cipher.update(text, 'hex', 'utf8') decrypted += cipher.final('utf8'); return decrypted; } </code></pre> <p>I basically want to encrypt, for example, <code>encrypt("Pizza")</code> in Nodejs, send it to the PHP page (<code>3879f91a59e9a458db62f905b0a488a1</code>), and decrypt it from there (<code>openssl_decrypt: return Pizza</code>).</p> <p><i>I know this code is not safe, since I'm not using an IV but I'm not sure how to add one.</i></p> </div>

关于java实现SM2和SM4加密,求组!!

得到明文密码组成pin,pin格式为:2位长度+明文+补F,长度为32位; 前端产生32位的随机数,使用公钥对随机数进行加密使用SM2(C1C3C2)得到A; 32位随机数对PIN进行加密使用SM4(ECB)得到B;

jQuery.md5.js 对用户名和密码进行加密 C#在后台如何解密

jQuery.md5.js在前台对用户名和密码进行了加密。 但是在后台C#解密出来同样是乱码。 请问如何实C#在后台成功解密jQuery.md5.js加密后的字符串。

POST提交的参数加密了如何查看参数(通过JS加密的)

页面地址:http://api.51pin.foxconn.com/iRecruitWeb/Recruit/Activity/ActivityParticipate.html?module=2 POST时的参数都被加密了 ActivityParticipate.c35bceda.js在这个加载的JS里找到AES加密KEY是:eaa34f53daf201e309e15d079eec15d5 这个KEY可以解密post后返回的信息 但发送前的数据参数解不开。 下面是提交时的加密参数 其中o和u的参数是固定不变的,JS里直接赋值了 主要是要看K和s的参数 {,…} k:"rGDkKl/QJxf9ktlFMnBmZUAOVNHEneeBYW4i3lp+qZV+rkcVxtpopt9SHiATv0tf" o:"1KA4uwBGXXSkgHW1snnrlQ==" s:"OHQRp4+2sFQc+Z4oNDBYR5if3SUppELlw+CVAPnCZU48HucQb9RoZSLTHv56zUkvQCUcFQZkv6/7vDl10yvZL/5GNBIazKnxIXM8Tqpzy4fC6QXSmw/fSI7LepXH8BwJXJmBlthASHQ9iOdUN/rAaA==" u:"7weOocer2tkQnKIklGZaMg=="

怎么实现web项目对前后端数据加密

如题。。。大大们可以简答介绍下么,,使用插件之类的么?还是说https

用户注册时客户端是先加密还是传到服务器端加密?

用户注册时用户密码是在客户端是先加密还是传到服务器端加密?如果到服务器端加密,那加密的意义不大啊?如果登录做比较是直接获取输入内容加密后与数据库的内容进行比较?还是将数据库内容解密与获取的内容进行比较?

怎么能通过js实现rsa加密

如题,想实现js的rsa加密,ajax传输密文。用openssl生成证书

AES用CBC解密后在ios端要么数据丢失,要么解密失败

后端JavaAES CBC方式加密json文件前端h5获取json进行解密,在Android下没问题数据解析正常,但是在ios有的机器数据解析出来丢失了一段。成了不完整的json串。有的机型直接解密失败。!!!!求大佬解救。 后端加密 ![加密](https://img-ask.csdn.net/upload/201905/05/1557034142_862463.png) -- 前端解密 ![前端解密](https://img-ask.csdn.net/upload/201905/05/1557034066_126318.png)

CryptoJS AES加密,然后使用openssl_decrypt在PHP中解密

<div class="post-text" itemprop="text"> <p>I'm doing some encrypt in a API, and I have some problem with AES encrypt using <code>CryptoJS</code> and <code>openssl_decrypt</code> in <code>PHP</code>.</p> <p><strong>JS</strong></p> <pre><code> var key = "B-LOGIN", iv = "c5b8cfc6992807e2c78a8cda6193bca1", json = JSON.stringify({email : "example@example.com", password: "123456", "domainUrl" : "http://www.example.com/"}), enc = CryptoJS.AES.encrypt( JSON.stringify({email : "example@example.com", password: "123456", "domainUrl" : "http://www.example.com/"}), CryptoJS.enc.Utf8.parse(key), { iv: CryptoJS.enc.Utf8.parse(iv.substring(0, 16)) } ); console.log( enc.ciphertext.toString() ); // b53284ed65e1810b7250e2760d10f3be2b31e188f356dd36da5e906c59bea877b2cd322cfb1228035c4a06920e2504657beaa2440c94f5ff7dd6485be7b7bbd82d5e91f22d64c98322a47b0413d4b724b0e2cbf2314472b6f72b4e19a5e44052 </code></pre> <p><strong>PHP</strong></p> <p>For decrypt in php I have the following code, and It gaves me a false in <code>$rawText</code>. </p> <pre><code>$iv = "c5b8cfc6992807e2"; $str = "b53284ed65e1810b7250e2760d10f3be2b31e188f356dd36da5e906c59bea877b2cd322cfb1228035c4a06920e2504657beaa2440c94f5ff7dd6485be7b7bbd82d5e91f22d64c98322a47b0413d4b724b0e2cbf2314472b6f72b4e19a5e44052"; $rawText = openssl_decrypt( $str,'aes-128-cbc' , 'B-LOGIN', 0, (strlen($iv) &gt; 16 ? substr($iv, 0 ,16) : $iv) ); // close </code></pre> <p>I think <code>CryptoJS</code> it gives the response in Hex format. </p> <p>Thanks in advance.</p> </div>

ASP.NET对称解密后Response文件流下载

一个AES对称加密压缩文件用AES解密后使用MemoryStream内存文件流存放后转换为byte[]字节流数组使用Response文件流输出方式输出。压缩文件打开的时候提示文件流出错,内容一样可以查看说明解密成功了。使用FileStream保存文件无任何异常。 `

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问