1. 程式人生 > >突破OPENSSL RSA加解密字串長度 PHP

突破OPENSSL RSA加解密字串長度 PHP

OPENSSL RSA加密時,明文長度受到限制,字串長度不能超過 245,所以若非要採用RSA,只能分段進行。

一、將明文分段加密再拼接在一起($json是明文字串,rsaEn是加密函式,$mark是自定義符號,用於分隔每個加密塊)

function encry($json, $mark)
	{
		$ret = null;
		if(strlen($json) > 245)
		{
			foreach(str_split($json, 245) as $chunk)  //chunk max 245
			{
				$tmp = self::rsaEn($chunk) . $mark;
				$ret .= $tmp;
			}
		}
		else
		{
			$ret = self::rsaEn($json);
		}
		return $ret;
	}

二、將密文按分隔符$mark拆開後分別解密,然後再拼接在一起($cipher是密文,rsaDe是解密函式)

function decry($cipher, $mark)
	{
		$plain = "";
		$cipher = str_replace(" ", "", $cipher);
		$enstrLen = strpos($cipher, $mark);
		if($enstrLen != false)
		{
			$cipher = str_replace($mark, "", $cipher);
			foreach(str_split($cipher, $enstrLen) as $chunk)
			{
				$tmp = rsaDe($chunk);
				$plain .= $tmp;
			}
		}
		else
		{
			$plain = rsaDe($cipher);
		}
		return $plain;
	}
轉載請註明出處。

相關推薦

突破OPENSSL RSA解密字串長度 PHP

OPENSSL RSA加密時,明文長度受到限制,字串長度不能超過 245,所以若非要採用RSA,只能分段進行。一、將明文分段加密再拼接在一起($json是明文字串,rsaEn是加密函式,$mark是自定義符號,用於分隔每個加密塊)function encry($json, $

PHP使用openssl實現RSA解密

業務場景就不用說了,有很多地方都用的到。在此寫出一個例子,一來供自己查閱,二來分享一下。。。 生成公鑰、私鑰的方法網上有很多,不過有個簡單的方法: 引用博友寫好的,點選連結檢視:linux下如何生成公鑰和私鑰 獲取到公鑰、私鑰之後,來看加密解密~~~~~~ 在此提一下跨語言

使用python實現RSA解密演算法(包含讀取檔案操作),檔案內容為16進位制字串,同時實現對學號姓名的加密——(SCU應用密碼學實驗)

#-*- coding:UTF-8 -*- ''' time: 2018-5-30 content:RSA python 3.6 mac os ''' from random import randint import random im

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 { /** * 私鑰加密 */

PHP RSA解密示例(轉)

1.生成金鑰和公鑰  開始前需要準備openssl環境  linux 需要安裝openssl工具包,傳送門http://www.openssl.org/source/  window 下需要安裝openssl的程式,傳送門http://slproweb.com/product

RSA解密 私鑰加密公鑰解密公解 && C++ 調用openssl庫 的代碼實例

密鑰 code www. res result 方法 urn .cn read 前提:秘鑰長度=1024 ==============================================     對一片(117字節)明文加密 私加 ==============

JS與PHP互通的RSA解密

<?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF

OpenSSL命令列工具驗證RSA解密

openssl簡介-指令rsa     用法           openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename]           [-passin arg] [-out filename] [-passout

RSA 解密的例子,JS加密--php解密

<?php define("KEY_PUBLIC", "-----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMYQWDqtLgDKlQvWzacGeBMQpbicd/uo XAvgLNpFZLM7zuYFDhrYncRsl8LIHK0

使用Crypto++5.5.2完成RSA解密,真正的把公鑰放在字串內,而不是放在檔案內

忙活了一週,基本完成了Crypto++庫中關於RSA加解密的API封裝!這一週裡,查了很多Crypto++的相關資料,感覺這方面的內容乏善可陳,或者太簡單,或者太籠統!本文希望能給使用Crypto++的朋友帶來一些幫助,主要還是原始碼了,實在沒有時間碼文字!在測試過程中,感覺Crypto++還是非常高效的,期

PHP RSA解密詳解(附代碼)

獲取 null 網上銀行 get 傳輸 賬戶 linu 數字簽名 mir 前言:RSA加密一般用在涉及到重要數據時所使用的加密算法,比如用戶的賬戶密碼傳輸,訂單的相關數據傳輸等。 加密方式說明:公鑰加密,私鑰解密。也可以 私鑰加密,公鑰解密 一、RSA簡介 R

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

與非java語言使用RSA解密遇到的問題:algid parse error, not a sequence

write ltr 結果 cep exp result 命令 pat ror 遇到的問題 在一個與Ruby語言對接的項目中,決定使用RSA算法來作為數據傳輸的加密與簽名算法。但是,在使用Ruby生成後給我的私鑰時,卻發生了異常:IOException: algid pars

python3 rsa 解密 支持長字符串

keys max none common clas pan length 加密 new # rsa 加密 def rsa_encrypt_bytes(bytes_str, n, e): if not isinstance(bytes_str, bytes):

Vue項目中的RSA解密

用戶輸入 dft eba NPU str 文件 動態生成 console ted 前後端使用rsa加密: 一般是客戶端初始化時訪問登錄服務時,服務端面動態生成一對RSA對,公鑰傳給客戶端,客戶端拿到後,用戶輸入密碼後,點登錄時用公鑰加密返回給服務端,服務端用私鑰解就行了

java rsa解密

簡單實用java實現rsa加解密,java內部使用pkcs8格式私鑰,openssl預設為pkcs1私鑰,注意格式 maven專案 //pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="

RSA解密工具類

參考: https://github.com/sjyuan-cc/cc.sjyuan.commons/blob/master/src/main/java/cc/sjyuan/commons/util/encryptor/RSAUtils.java package com.tinfinite.co

關於rsa解密的內容超長的問題

轉自:https://blog.csdn.net/taoxin52/article/details/53782470 一. 現象:      有一段老程式碼用來加密的,但是在使用key A的時候,丟擲了異常:javax.crypto.Illega