`
王之子
  • 浏览: 105689 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JavaScript 与 PHP 进行 RSA 加密解密实例

阅读更多

RSA 即“非对称加密算法”。它有3个特征: 

 

  1. 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
  2. 甲方获取乙方的公钥,然后用它对信息加密。
  3. 乙方得到加密后的信息,用私钥解密。
在开发应用的时候,你可能会碰到这样的需求:密码不能够明文传输,又无法用 HTTPS 协议。这时就可以用到 RSA 来解决这个需求了。
以下是 JAVASCRIPT 调用 RSA 源码:
var public_key="00b0c2732193eebde5b2e278736a22977a5ee1bb99bea18c0681ad97484b4c7f681e963348eb80667b954534293b0a6cbe2f9651fc98c9ee833f343e719c97c670ead8bec704282f94d9873e083cfd41554f356f00aea38d2b07551733541b64790c2c8f400486fd662a3e95fd5edd2acf4d59ca97fad65cc59b8d10cbc5430c53";
var public_length="10001";

var rsa = new RSAKey();
rsa.setPublic(public_key, public_length);	
var password = $.trim($('#q_login_tab').find('input[name="password"]').val());
password = rsa.encrypt(password);
 
我们可以通过浏览器开发人员工具查看密码已经加密。


 
再来看 PHP 是如何调用 RSA 算法的。
<?php
require_once 'rsa.php';

function convert($hexString) {
	$hexLenght = strlen ( $hexString );
	// only hex numbers is allowed 
	if ($hexLenght % 2 != 0 || preg_match ( "/[^\da-fA-F]/", $hexString ))
		return false;
	$binString = '';
	for($x = 1; $x <= $hexLenght / 2; $x ++) {
		$binString .= chr ( hexdec ( substr ( $hexString, 2 * $x - 2, 2 ) ) );
	}
	
	return $binString;
}
/**
 * RSA 解密
 *
 */
function decryptPassword($password) {
	$modulus = '124124790696783899579957666732205416556275207289308772677367395397704314099727565633927507139389670490184904760526156031441045563225987129220634807383637837918320623518532877734472159024203477820731033762885040862183213160281165618500092483026873487507336293388981515466164416989192069833140532570993394388051.0000000000';
	$private = '59940207454900542501281722336097731406274284149290386158861762508911700758780200454438527029729836453810395133453343700246367853044479311924174899432036400630350527132581124575735909908195078492323048176864577497230467497768502277772070557874686662727818507841304646138785432507752788647631021854537869399041.0000000000';
	$public = "65537";
	$keylength = "1024";
	$encrypted = convert ( $password ); //hex data to bin data

	//php encrypt create  
	//$encrypted = rsa_encrypt("vzxcvz bdxf", $public, $modulus, $keylength);
	//$str= bin2hex($encrypted);//bin data to hex data 
	//$str = $_POST['ciphertext'];
	//echo $str."
";
	
	return rsa_decrypt ( $encrypted, $private, $modulus, $keylength );
}

$password = decryptPassword($_POST['password']);

?>
 
这样,就可以解密出明文的密码了。这里附上 RSA源码,有兴趣的童鞋可以下载,在自己的服务器运行。https://yunpan.cn/cSfKMpfffVFzu  访问密码 1fe5
  • 大小: 255.3 KB
分享到:
评论

相关推荐

    VB6.0 RSA/AES/Md5/Base64加密 解密 微信小程序 javascript 通用

    VB6.0 RSA/AES/Md5/Base64加密 解密 微信小程序 javascript 通用 仅demo实例!可先测试使用!

    原生js的RSA和AES加密解密算法

    本文实例为大家分享了js中RSA和AES加密解密详细代码,供大家参考,具体内容如下 &lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset='UTF-8'&gt; &lt;/head&gt; &lt;body&gt; &lt;div class='test'&gt;...

    JavaScript实现的前端AES加密解密功能【基于CryptoJS】

    本文实例讲述了JavaScript实现的前端AES加密解密功能。分享给大家供大家参考,具体如下: js前端AES加密 最近由于项目需求做了一次MITM,突然即使发现使用HTTPS,也不能保证数据传输过程中的安全性。 通过中间人攻击...

    CryptoRSA:使用RSA算法在JavaScript中解密二进制缓冲区

    用JavaScript加密/解密二进制缓冲区 如何安装 下载: 正常:下载发行版并在项目文件夹中复制“ CryptoRSA.js” 克隆:插入git bash命令: git clone https://github.com/mdjfs/CryptoRSA.git 安装:在HTML中添加...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    C#基类库大全下载--苏飞版

    RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient  FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper ...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包3

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包4

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    C#基础类库

    RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient  FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper ...

    C#基类库(苏飞版)

    RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient  FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper ...

    asp.net知识库

    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable 与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的...

Global site tag (gtag.js) - Google Analytics