Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung von RSA-Verschlüsselungs- und Entschlüsselungsalgorithmusfunktionen

Implementierung von RSA-Verschlüsselungs- und Entschlüsselungsalgorithmusfunktionen

php中世界最好的语言
php中世界最好的语言Original
2018-03-24 13:33:341712Durchsuche

Dieses Mal werde ich Ihnen die Implementierung der RSA-Verschlüsselungs- und Entschlüsselungsalgorithmusfunktion vorstellen. Was sind die Vorsichtsmaßnahmen für die Implementierung der RSA-Verschlüsselungs- und Entschlüsselungsalgorithmusfunktion? Schauen Sie mal rein.

Sie können zunächst die Website http://web.chacuo.net/netrsakeypair besuchen, um öffentliche und private Schlüssel online zu generieren

Asymmetrischer RSA-Verschlüsselungsalgorithmus, wenn es sich um eine Verschlüsselung mit öffentlichem Schlüssel handelt, einfach Sie müssen den privaten Schlüssel zum Entschlüsseln verwenden und umgekehrt. Wenn der private Schlüssel verschlüsselt ist, verwenden Sie den öffentlichen Schlüssel zum Entschlüsseln. Im Folgenden sind die relevanten Implementierungsfunktionen aufgeführt

Ich glaube, Sie haben den Fall in diesem Artikel gelesen. Sie beherrschen die Methode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
/**
 * RSA私钥加密
 * @param string $private_key 私钥
 * @param string $data 要加密的字符串
 * @return string $encrypted 返回加密后的字符串
 * @author mosishu
 */
function privateEncrypt($private_key,$data){
 $encrypted = '';
 $pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
 //最大允许加密长度为117,得分段加密
 $plainData = str_split($data, 100);//生成密钥位数 1024 bit key
 foreach($plainData as $chunk){
  $partialEncrypted = '';
  $encryptionOk = openssl_private_encrypt($chunk,$partialEncrypted,$pi_key);//私钥加密
  if($encryptionOk === false){
   return false;
  }
  $encrypted .= $partialEncrypted;
 }
 
 $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
 return $encrypted;
}
/**
 * RSA公钥解密(私钥加密的内容通过公钥可以解密出来)
 * @param string $public_key 公钥
 * @param string $data 私钥加密后的字符串
 * @return string $decrypted 返回解密后的字符串
 * @author mosishu
 */
function publicDecrypt($public_key,$data){
 $decrypted = '';
 $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的
 $plainData = str_split(base64_decode($data), 128);//生成密钥位数 1024 bit key
 foreach($plainData as $chunk){
  $str = '';
  $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公钥解密
  if($decryptionOk === false){
   return false;
  }
  $decrypted .= $str;
 }
 return $decrypted;
}
Empfohlene Lektüre:
//RSA公钥加密
function publicEncrypt($public_key,$data){
 $encrypted = '';
 $pu_key = openssl_pkey_get_public($public_key);
 $plainData = str_split($data, 100);
 foreach($plainData as $chunk){
  $partialEncrypted = '';
  $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公钥加密
  if($encryptionOk === false){
   return false;
  }
  $encrypted .= $partialEncrypted;
 }
 $encrypted = base64_encode($encrypted);
 return $encrypted;
}
//RSA私钥解密
function privateDecrypt($private_key,$data){
 $decrypted = '';
 $pi_key = openssl_pkey_get_private($private_key);
 $plainData = str_split(base64_decode($data), 128); 
 foreach($plainData as $chunk){
  $str = '';
  $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私钥解密
  if($decryptionOk === false){
   return false;
  }
  $decrypted .= $str;
 }
 return $decrypted;
}

So verwenden Sie den PHP-Generator

Installationsanleitung von phpStudy2018

ThinkPHP implementiert den WeChat-Zahlungsprozess (jsapi payment) – Tutorial, detaillierte Erklärung_php-Beispiel

Das obige ist der detaillierte Inhalt vonImplementierung von RSA-Verschlüsselungs- und Entschlüsselungsalgorithmusfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn