JS與PHP互通的RSA加解密
<?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/ Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH 2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6 ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL 3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq deJU/cHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+ qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2 4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c -----END RSA PRIVATE KEY-----'; $public_key = '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt 3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o 2n1vP1D+tD3amHsK7QIDAQAB -----END PUBLIC KEY-----'; //echo $private_key; $pi_key = openssl_pkey_get_private($private_key);//這個函式可用來判斷私鑰是否是可用的,可用返回資源id Resource id $pu_key = openssl_pkey_get_public($public_key);//這個函式可用來判斷公鑰是否是可用的 // print_r($pi_key);echo "<br>"; // print_r($pu_key);echo "<br>"; $data = "This is a test!";//原始資料 $encrypted = ""; $decrypted = ""; openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密 $encrypted = base64_encode($encrypted);//加密後的內容通常含有特殊字元,需要編碼轉換下,在網路間通過url傳輸時要注意base64編碼是否是url安全的 openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內容通過公鑰可用解密出來 openssl_public_encrypt($data,$encrypted2,$pu_key);//公鑰加密 $encrypted2 = base64_encode($encrypted2); openssl_private_decrypt(base64_decode($encrypted2),$decrypted2,$pi_key);//私鑰解密 ?> <html> <head> <title>JSEncrypt Example</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./jsencrypt.js"></script> <script type="text/javascript" src="./jquery.js"></script> </head> <body> <script type="text/javascript"> function do_encrypt() { var encrypt = new JSEncrypt(); encrypt.setPublicKey($('#pubkey').val()); var encrypted = encrypt.encrypt($('#input').val()); // Decrypt with the private key... var decrypt = new JSEncrypt(); decrypt.setPrivateKey($('#privkey').val()); var uncrypted = decrypt.decrypt(encrypted); var $bstr1=decrypt.encrypt($('#input').val()); var $bstr2=encrypt.decrypt($bstr1); // Now a simple check to see if the round-trip worked. if (uncrypted == $('#input').val()) { $('#pubkeyencode').val(encrypted); $('#privkeydecode').val(uncrypted); } else { alert('Something went wrong....'); } var decryptPHP = decrypt.decrypt("<?php echo $encrypted2;?>"); $('#jsdecode').val(decryptPHP); } </script> <label for="privkey">Private Key</label><br/> <textarea id="privkey" rows="15" cols="65"><?php echo $private_key; ?></textarea><br/> <label for="pubkey">Public Key</label><br/> <textarea id="pubkey" rows="8" cols="65"><?php echo $public_key; ?></textarea><br/> <label for="input">Text to encrypt:</label><br/> <textarea id="input" name="input" type="text" rows=4 cols=70><?php echo $data; ?></textarea><br/> <?php echo "source data:".$data."<br>"; echo "private key encrypt by PHP:"."<br>"; echo $encrypted."<br>"; echo "public key decrypt by PHP:"."<br>"; echo $decrypted."<br>"; echo "---------------------------------------"."<br>"; echo "public key encrypt by PHP:"."<br>"; echo $encrypted2."<br>"; echo "private key decrypt by PHP:"."<br>"; echo $decrypted2."<br>"; echo "private key decrypt by JS:"."<br>"; ?> <textarea id="jsdecode" rows="3" cols="65"></textarea><br/> <input id="testme" type="button" onClick="do_encrypt();" value="Test Me!!!" /><br/> <label for="pubkey">Public Key Encrypt</label><br/> <form name="testphp" action="demo.php" method="get"> <textarea id="pubkeyencode" name="encode" rows="5" cols="65"></textarea><br/> <label for="pubkey">Private Key Decrypt</label><br/> <textarea id="privkeydecode" rows="5" cols="65"></textarea><br/> <input type="submit"value="Test PHP!!!" /><br/> </form> <label for="pubkey">Private Key Decrypt By PHP</label><br/> <textarea id="privkeydecode" rows="3" cols="65"> <?php if($_GET["encode"]!="") openssl_private_decrypt(base64_decode($_GET["encode"]),$str1,$pi_key);//私鑰解密 echo $str1; ?> </textarea><br/> </body> </html>
經測試,可以讓PHP與JS輕鬆配合,實現公鑰加密與私鑰解密。
相關推薦
JS與PHP互通的RSA加解密
<?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF
python Crypto AES-256-ECB 與PHP之間完成加解密
openss 固定 base aes ecb 世界 and brush mode AES算法描述: 首先AES是一種對稱加密算法。 算法特點: 1、AES的區塊長度固定為128 比特(16字節)。 # 因此在加密前需要對待加密字符串進行填充,長度填充至128bi
關於java 與PHP aes-128 加解密的問題
寫個這個問題呢,是自己專案中遇到了!最後java 的夥伴陪同我一起解決了,所以就記錄下啦!不做頁面優化了! java使用aes-128 加密與php 使用aes-128加密是不一樣的,首先,java加
C#/JAVA/PHP 互通DES加解密演算法(ECB模式支援8位)
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingE
RSA 加解密的例子,JS加密--php解密
<?php define("KEY_PUBLIC", "-----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMYQWDqtLgDKlQvWzacGeBMQpbicd/uo XAvgLNpFZLM7zuYFDhrYncRsl8LIHK0
與非java語言使用RSA加解密遇到的問題:algid parse error, not a sequence
write ltr 結果 cep exp result 命令 pat ror 遇到的問題 在一個與Ruby語言對接的項目中,決定使用RSA算法來作為數據傳輸的加密與簽名算法。但是,在使用Ruby生成後給我的私鑰時,卻發生了異常:IOException: algid pars
PHP RSA加解密示例
1.生成金鑰和公鑰 開始前需要準備openssl環境 linux 需要安裝openssl工具包,傳送門http://www.openssl.org/source/ window 下需要安裝openssl的程式,傳送門http://slproweb.com/prod
PHP RSA加解密工具
/** * RSA加解密工具 * User: 樂楊俊 * Date: 2016/9/17 * Time: 下午4:06 */ namespace leyangjun\Lib; class CryptRsa { /** * 私鑰加密 */
RSA加解密——前端js加密,後臺解密
一、前端js 1、前端js 先引入 jsencrypt.js <script src="${pageContext.request.contextPath}/static/scripts/jquery/dist/jsencrypt.
PHP RSA加解密示例(轉)
1.生成金鑰和公鑰 開始前需要準備openssl環境 linux 需要安裝openssl工具包,傳送門http://www.openssl.org/source/ window 下需要安裝openssl的程式,傳送門http://slproweb.com/product
PHP使用openssl實現RSA加解密
業務場景就不用說了,有很多地方都用的到。在此寫出一個例子,一來供自己查閱,二來分享一下。。。 生成公鑰、私鑰的方法網上有很多,不過有個簡單的方法: 引用博友寫好的,點選連結檢視:linux下如何生成公鑰和私鑰 獲取到公鑰、私鑰之後,來看加密解密~~~~~~ 在此提一下跨語言
突破OPENSSL RSA加解密字串長度 PHP
OPENSSL RSA加密時,明文長度受到限制,字串長度不能超過 245,所以若非要採用RSA,只能分段進行。一、將明文分段加密再拼接在一起($json是明文字串,rsaEn是加密函式,$mark是自定義符號,用於分隔每個加密塊)function encry($json, $
RSA加解密與簽名驗籤
1.RSA介紹 1.訊息摘要 如果訊息改變了,那麼改變之後的訊息的指紋和原訊息的指紋將不匹配,如果訊息的指紋和訊息是分開傳送的。那麼接收者就可以檢查訊息是否被篡改過。但是,如果我同時知道了訊息和指
JS下RSA加解密
最近專案中需要在JS中使用RSA進行加密,於是乎從網上找了一個RSA的JS(JSEncrypt)庫,使用起來也很方便。其官網地址為:http://travistidwell.com/jsencry
JS實現AES加密並與PHP互通
有關資料加密解密問題,有很多鍾加密方式; 這裡我講述下js和php實現AES互通 js加密: 首先引入這幾個js檔案 <script type="text/javascript" src="/CryptoJS/aes.js"></script> &
PHP RSA加解密詳解(附代碼)
獲取 null 網上銀行 get 傳輸 賬戶 linu 數字簽名 mir 前言:RSA加密一般用在涉及到重要數據時所使用的加密算法,比如用戶的賬戶密碼傳輸,訂單的相關數據傳輸等。 加密方式說明:公鑰加密,私鑰解密。也可以 私鑰加密,公鑰解密 一、RSA簡介 R
C# 與JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle來實現私鑰加密,公鑰解密的方法
cipher process [] var class mar tor als get 因為C#的RSA加密解密只有公鑰加密,私鑰解密,沒有私鑰加密,公鑰解密。在網上查了很久也沒有很好的實現。BouncyCastle的文檔少之又少。很多人可能會說,C#也是可以的,通過Big
php RSA加解密
nim ring efi 區別 iam 功能 1=1 ted 發送 相關介紹 RSA算法屬於非對稱加密算法,非對稱加密算法需要兩個秘鑰:公開密鑰(publickey)和私有秘鑰(privatekey).公開密鑰和私有秘鑰是一對, 如果公開密鑰對數據進行加密,只有用對應的
java rsa加解密算法的實現
binary 0x03 object sat ear exc triple turn create RSAUtils:RSA加解密的實現 package com.rsa.test; import java.io.ByteArrayOutputStream; import
js與php的區別
解析 string sse php變量 $$ nbsp 提醒 set 強制 1 。 PHP拼字符串用的是點. js用+號。2。 php文件要放在wamp文件裏面的www裏面。3。 php與js的嵌入方式相同,只是嵌入的標記不一樣。4。 php輸出語法