js使用公钥对信息进行加密传输,php使用私钥解密获取信息

js rsa相关信息:

js使用16进制公钥进行加密,生成16进制加密数据,hex_string

http://www-cs-students.stanford.edu/~tjw/jsbn/

注意:js需要先对数据做url编码处理,如 encodeURIComponent(text) 再将数据传输给php

php rsa相关信息(需要openssl扩展):

php解密前需要转换成2进制数据 pack("H*", $hex_string)

http://cn.php.net/manual/zh/book.openssl.php

http://cn.php.net/manual/zh/function.openssl-private-decrypt.php

密钥生成
生成私钥
openssl genrsa -out key.pem 1024
DES3方式加密私钥
openssl rsa -in key.pem -des3 -out prikey.des3.pem
生成公钥
openssl rsa -in key.pem -pubout -out pubkey.pem
生成16进制密钥
openssl asn1parse -i -inform PEM < key.pem

0:d=0  hl=4 l= 604 cons: SEQUENCE

4:d=1  hl=2 l=   1 prim:  INTEGER           :00

7:d=1  hl=3 l= 129 prim:  INTEGER           :CC3D43A99398674AC09F0FF240833BBA9C1778EF54B98620CA6441915513F0BA264CED88700898BA5316E85DBE61780770E10C4B5B2F19B2356A1E3941B168A7AAEAE48F48A9F4BC3D7BB5281CF590993B77AB87327AB3F102F96CACC6098909A2745EAFB7198B3A0FF075228EB3C5E4CDB6B7A085FE5F2307988E7FE852D197(十六进制公钥)

139:d=1  hl=2 l=   3 prim:  INTEGER           :010001

144:d=1  hl=3 l= 128 prim:  INTEGER           :52DFD531DD3B2D46AEEC9C4ADF94A0CAF305AF43E62C35D9DE665A18BFDE0C836C8130AD795073B0BF807F1F72DE181764DD5CE0C30A54B1F46CB000E9C034478342CB00EDBECCCBC1ED63C29046CB5278AAEA0B0BA2976D37E04978CD65E856D6FEF644D2BD9AB008DA83934F8C227191CC6C8E4E9A1189E23F14A64DE5FC79(私钥)

275:d=1  hl=2 l=  65 prim:  INTEGER           :E8310AA5191EF2561C3BCA025E880B87B7A351A15C80F659C6F2C57017F7EE559038E174813BBA504D616A1502D2A5213157458DAB1BFF00FA1B929CD45395FD

342:d=1  hl=2 l=  65 prim:  INTEGER           :E12E7C078048AAD4805E5ED71D0DC4977D051083C0EA82BEC71150F181D3E67EFA3259DB0A686CDE0EF829548A95CCCB4F4D695D3A82E0DC3BAAD61E41D39023

409:d=1  hl=2 l=  64 prim:  INTEGER           :1C98458E558CA91D8FB691473F6B13B870162DEC685EFD77CAF784F72C0C7D8E8E0763449CD1C53D347A65BD16AEE8653115655C70112F936839D3117B589BE5

475:d=1  hl=2 l=  64 prim:  INTEGER           :3F441D2ACA5B204BF6090DA268924EB2B538700C646E3EEFB4E4639687006F192BD86BB083FB14E34AD7645D5156872474126ED0F7B87FCEC0A0DDE9C05ADD7B

541:d=1  hl=2 l=  65 prim:  INTEGER           :E11373ABA580936F0F3954E10E1ED8BCD85ABA6B7A343D82E1210FFF4B9440BD0AD3AE1FF35B90A39190249A28BA478181A179C5DCD6B194C267A11B7C1A0335

源代码:

js:function rsa_encrypt(text) {

   var rsa_pubkey="BD325CE52FC6BA090AC0C7A2039236587F99C30FA518F601F2AD33019514EE5A4340A964853E1BDF5374AB4AC22F5CFF3288E5DB94E6752B4999972DF4E23DACACAE4E4DCFB6CBAE256F1B19C4BA892D54C7A3E068F93AB47EC50635556FC223F02CB1F520631E2F03E5509B6C1E24DFB7962BCD6DC74159BF0E5AFC03D9A00D";

   var rsa = new RSAKey();   rsa.setPublic(rsa_pubkey, '10001');   return rsa.encrypt(text);}

function rsa_submit() {   var text = document.getElementById('text');   var en = rsa_encrypt(encodeURIComponent(text.value));   text.value = en;   return true;}

php:
<?php/** 加密助手 */class RsaHelper {    private $_public_key;    private $_private_key;

    public function __construct($path=null){        $this->_private_key  = $path ? trim($path, '/') . '/private.key' : dirname(__DIR__) . '/certificate/private.key';        $this->_public_key   = $path ? trim($path, '/') . '/private.key' : dirname(__DIR__) . '/certificate/public.key';    }

    //js解密    public function rsa_decrypt_for_js($text, $padding=OPENSSL_PKCS1_PADDING) {        $private_key_content = file_get_contents($this->_private_key);        $private_key = openssl_pkey_get_private($private_key_content);        if ($private_key == false) {            throw new Exception("The private key {$private_key_content} is not invalid");        }        $pack = pack("H*", $text);        $decrypted = '';        if (!openssl_private_decrypt($pack, $decrypted, $private_key, $padding)) {            $errmsg = '';            while ($msg = openssl_error_string()) {                $errmsg .= $msg. "\n";            }            throw new Exception("Js decrypt error: " . $errmsg);        }

        if ($padding == OPENSSL_NO_PADDING) {            return rtrim(strrev($decrypted), "/0");        } else {            return urldecode($decrypted);        }    }

    //php解密    public function rsa_decryp($text, $padding=OPENSSL_PKCS1_PADDING) {        $private_key_content = file_get_contents($this->_private_key);        $private_key = openssl_pkey_get_private($private_key_content);        if ($private_key == false) {            throw new Exception("The private key {$private_key_content} is not invalid");        }        $decrypted = '';        if (!openssl_private_decrypt($text, $decrypted, $private_key, $padding)) {            $errmsg = '';            while ($msg = openssl_error_string()) {                $errmsg .= $msg. "\n";            }            throw new Exception("Decrypt error: " . $errmsg);        }

        return $decrypted;    }

    //php加密    public function rsa_encrypt($text) {        $public_key_content = file_get_contents($this->_public_key);        $public_key = openssl_pkey_get_public($public_key_content);        if ($public_key == false) {            throw new Exception("The public key {$public_key_content} is not invalid");        }        $crypted = '';        if (!openssl_public_encrypt($text, $crypted, $public_key, OPENSSL_PKCS1_PADDING)) {            $errmsg = '';            while ($msg = openssl_error_string()) {                $errmsg .= $msg. "\n";            }            throw new Exception("Encrypt error: " . $errmsg);        }        return $crypted;    }}

转载于:https://www.cnblogs.com/hike2008/p/4517765.html

php js 的rsa加密相关推荐

  1. python3 rsa加密_【Python】Python3 实现 JS 中 RSA 加密的 NoPadding 模式

    前因后果之哗啦啦废话连篇: 这几天本人在 Python 做某网站登陆的时候,发现其登陆时用户名和密码被加密了 F12 仔细看了一下,发现是调用了一个 js 的 rsa 加密库,页面 dom 中有 rs ...

  2. Js参数RSA加密传输之jsencrypt.js的使用

    这篇文章主要介绍了Js参数RSA加密传输之jsencrypt.js的使用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 注意几点: 1.参数传递的+号处理,在传输时会把+变成 ...

  3. 前端利用jsencrypt.js进行RSA加密

    什么是RSA加密 RSA加密算法是一种非对称加密算法,RSA加密使用了"一对"密钥.分别是公钥和私钥,这个公钥和私钥其实就是一组数字!其二进制位长度可以是1024位或者2048位. ...

  4. 关于前端利用jsencrypt.js进行RSA加密

    最近有用到jsencrypt来对登录密码进行rsa加密处理,记录下来,供自己以后查阅. 什么是RSA加密 RSA加密算法是一种非对称加密算法,RSA加密使用了"一对"密钥.分别是公 ...

  5. 前端利用jsencrypt.min.js进行RSA加密(常用在登录密码加密)全局方法封装

    步骤: 项目中下载 npm install jsencrypt untils文件下新建js文件,封装公共方法 import JSEncrypt from 'jsencrypt/bin/jsencryp ...

  6. 前端JS RSA加密,PHP后端解密实现密码安全传输

    在设计用户注册登陆系统的时候,密码的安全传输一直是一个需要特别引起注意的地方,很多网站包括大型网站依然还是采用明文传输密码的方式,安全隐患需要注意.当然,为了防止第三人的恶意窃听,不少网站已经启用了H ...

  7. vue安装jsencrypt_vue使用JSEncrypt实现rsa加密及挂载方法

    挂载全局方法 使用jsencrypt进行rsa加密 原文链接:Js参数RSA加密传输,jsencrypt.js的使用 - CSDN博客* https://blog.csdn.net/p31201115 ...

  8. Jmeter_前端RSA加密下的登陆模拟_引用js文件实现(转)

    在一次项目实战中,前端登录使用了RSA加密,使用LoadRunner压测的第一步,就是模拟用户登录,可惜loadRunner11并不能录制前端的加密过程,并且安装的LR是基于C语言版,网络上关于RSA ...

  9. rsa 加密 js php,security.js+RSA做出加密功能

    这次给大家带来security.js+RSA做出加密功能,的注意事项有哪些,下面就是实战案例,一起来看一下. 在项目中遇到要对用户输入的密码进行RSA加密的需求,总结一下实现过程: JS rsa加密 ...

最新文章

  1. 单元测试框架之unittest(一)
  2. Web pack misc
  3. Eclipse C/C++开发环境搭建
  4. 一步一步做搜索(一)
  5. element ui el-dialog 居中,并且内容多的时候内部可以滚动
  6. kernel headers
  7. Linux操作系统中ps命令常见用法
  8. 短信验证码接口被恶意攻击怎么办?
  9. 陶华碧: 就懂辣椒酱,作为吃的东西,即使过了几代,也依然能够传的下去。
  10. 亚马逊aws 服务器删除_如何关闭Amazon AWS上服务器
  11. 性能优化之内存泄露(Memory Leak)常用分析工具(另3种)
  12. FM收音机 RDS的强大功能
  13. Milliman和Akur8结成战略联盟,为财产和意外伤害保险公司、管理型总代理和初创企业提供下一代定价能力
  14. QUASI-HYPERBOLIC (拟双曲线) MOMENTUM AND ADAM FOR DEEP LEARNING——精读
  15. 组成计算机cpu的两大软件是,交换机和计算机一样,也由硬件和软件两部分组成,硬件包括CPU...
  16. Unity-Live2d(模型参数设置,当前参数保存与恢复所保存参数, 部分位置透明度设置,自动眨眼)
  17. 有一分数序列,2/1, 3/2, 5/3, 8/5, 13/8, 21/13,……,请编程求出这个数列的前20项之和。
  18. 商业研究(19):变革家,专注创业项目分析,重点服务广大散户(建议股权众筹者谨慎买入。。。)
  19. 合肥工业大学——java(最新版)——第二次作业
  20. django使用Q进行复杂查询

热门文章

  1. 钉钉免登陆前端操作详解
  2. html5 微格式,HTML5 微格式和相关的属性名称
  3. threadpoolexecutor参数_ThreadPoolExecutor的使用
  4. 机器学习:支持向量机SVM和人工神经网络ANN的比较
  5. Opencv--图像颠倒的问题
  6. 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
  7. 使用ffmpeg捕获USB外部摄像头视频流
  8. 计算机在线问答,网络信息安全知识:公安机关发现影响计算机信息系统安全的隐患时,()。...
  9. java高级考试题_JAVA高级考试题
  10. datepicker不能选择是为什么_腻子膏为什么与墙沾不上?我来教您几招