国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Home php教程 PHP開發(fā) Detailed explanation of php rsa encryption, decryption, signature, and signature verification

Detailed explanation of php rsa encryption, decryption, signature, and signature verification

Dec 30, 2016 am 09:21 AM

php rsa encryption, decryption, signature, signature verification

Since the third-party organization uses the Java version of rsa encryption and decryption method, I first found many PHP versions of rsa encryption and decryption on the Internet. But most of them are not suitable for docking with java.

The following php version is suitable for docking with the java interface. The java applicable key needs to be added when using the php language.

-----BEGIN CERTIFICATE-----
  
-----END CERTIFICATE-----


Use key:
Encryption public key public_key.cer

Decryption private key private_key.key

Signature private key sign_key.key

Verification public key verify.cer

<?php
class RSAUtils{
  //加密公鑰
  function redPukey()
  {   
    //拼接加密公鑰路徑
    $encryptionKeyPath="D:/encryptions.cer";  
    $encryptionKey4Server = file_get_contents($encryptionKeyPath);
 
    $pem = chunk_split(base64_encode($encryptionKey4Server),64,"\n");//轉(zhuǎn)換為pem格式的公鑰
    $pem = "-----BEGIN CERTIFICATE-----\n".$pem."-----END CERTIFICATE-----\n";
    $publicKey = openssl_pkey_get_public($pem);
    return $publicKey;
  }
   
  //解密私鑰
  function redPikey()
  {   
    //拼接解密私鑰路徑
    $decryptKeyPath="D:/decrypts.key";  
    $decryptKey4Server = file_get_contents($decryptKeyPath);
 
    $pem = chunk_split($decryptKey4Server,64,"\n");//轉(zhuǎn)換為pem格式的私鑰
    $pem = "-----BEGIN PRIVATE KEY-----\n".$pem."-----END PRIVATE KEY-----\n";
    $privateKey = openssl_pkey_get_private($pem);
    return $privateKey;
  }
   
  //簽名私鑰
  function redSignkey()
  {   
    //拼接簽名路徑
    $signKeyPath="D:/DEMO/sign.key";
    $signKey4Server = file_get_contents($signKeyPath);
 
    $pem = chunk_split($signKey4Server,64,"\n");//轉(zhuǎn)換為pem格式的私鑰
    $pem = "-----BEGIN PRIVATE KEY-----\n".$pem."-----END PRIVATE KEY-----\n";
    $signKey = openssl_pkey_get_private($pem);
    return $signKey;
  }
   
  //驗(yàn)簽公鑰
  function redVerifykey()
  {   
    //拼接驗(yàn)簽路徑
    $verifyKeyPath="D:/DEMO/verify.cer"; 
    $verifyKey4Server = file_get_contents($verifyKeyPath);
 
    $pem = chunk_split(base64_encode($verifyKey4Server),64,"\n");//轉(zhuǎn)換為pem格式的公鑰
    $pem = "-----BEGIN CERTIFICATE-----\n".$pem."-----END CERTIFICATE-----\n";
    $verifyKey = openssl_pkey_get_public($pem);
    return $verifyKey;
  }
   
  //公鑰加密
  function pubkeyEncrypt($source_data, $pu_key) {
    $data = "";
    $dataArray = str_split($source_data, 117);
    foreach ($dataArray as $value) {
      $encryptedTemp = "";
      openssl_public_encrypt($value,$encryptedTemp,$pu_key);//公鑰加密
      $data .= base64_encode($encryptedTemp);
    }
    return $data;
  }
   
  //私鑰解密
  function pikeyDecrypt($eccryptData,$decryptKey) {
    $decrypted = "";
    $decodeStr = base64_decode($eccryptData);
    $enArray = str_split($decodeStr, 256);
 
    foreach ($enArray as $va) {
      openssl_private_decrypt($va,$decryptedTemp,$decryptKey);//私鑰解密
      $decrypted .= $decryptedTemp;
    }
    return $decrypted;
  }
   
  
}
?>


Note:

Sometimes after encrypting with base64_encode, it is transmitted to other pages in the form of GET. When decrypted with base64_decode, garbled characters appear.

When I encountered this problem, I was wondering why some could be decrypted correctly, but some were garbled?

After checking later, I found that there were some Chinese characters in the GET format When passed over, the + sign will be replaced with a space.

In order to prevent garbled characters, I made a step of substitution and then decrypted it. Sure enough, the problem of garbled characters no longer exists!

For example, if you pass an oid variable in the form of GET, then when decrypting and restoring, first replace the spaces with + signs. Then the output will be normal.

is as follows: $oid=base64_decode(str_replace(" ","+",$_GET[oid]));

Thank you for reading, I hope it can help you, thank you for your support of this site!

For more php rsa encryption, decryption, signature, and signature verification related articles, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1502
276