php中rsa加密及解密和簽名及驗簽

  加密的內容長度限制為密鑰長度少11位,如128位的密鑰最多加密的內容為117個長度。

  公鑰加密
    $public_content=file_get_contents(公鑰路徑);
    $public_key=openssl_get_publickey($public_content);
    
    $original_str='待加密的內容';
    $original_arr=str_split($original_str,117);  //折分
    foreach($original_arr as $o)
    {
      $sub_enc=null;
      openssl_public_encrypt($o,$sub_enc,$public_key);
      $original_enc_arr[]=$sub_enc;
    }
    openssl_free_key($public_key);
    $original_enc_str=base64_encode(implode('',$original_enc_arr));//最終網絡傳的密文
  私鑰解密
    $private_content=file_get_contents(私鑰路徑);
    $private_key=openssl_get_privatekey($private_content);

    $original_enc_str=base64_decode(密文);
    $orig_dec_str='';
    for($i=0;$i<strlen($original_enc_str)/128;$i++)
    {
       $data=substr($original_enc_str,$i*128,128);
       openssl_private_decrypt($data,$decrypt,$private_key);
       $orig_dec_str.=$decrypt;
    }
    $orig_dec_str為最后解密出來的。

  注:私鑰加密及公鑰解密同理。
-----------------------------------------------------------------------------------------------------------------------
  私鑰簽名
    $private_content=file_get_contents(私鑰路徑);
    $private_key=openssl_get_privatekey($private_content);

    $original_str='';//原數據
    openssl_sign($original_str,$sign,$private_key);
    openssl_free_key($private_key);
    $sign=base64_encode($sign);//最終的簽名    

  公鑰驗簽
    $public_content=file_get_contents(公鑰路徑);
    $public_key=openssl_get_publickey($public_content);

    $sign=base64_decode($sign)'';//得到的簽名
    $original_str='';得到的數據
    $result=(bool)openssl_verify($original_str,$sign,$public_key);
    openssl_free_key($public_key);
    $result為真時簽驗通過,假時未通過

    

轉載于:https://www.cnblogs.com/bwteacher/p/5757361.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Opencv ---像素坐標轉世界坐標(已知外參)

只能求取已知外參的世界坐標平面上的世界坐標&#xff0c;具體公式如圖片所示&#xff01; PS&#xff1a;字丑請諒解&#xff01;

最優化5-8章重點(考試點全)

10道題&#xff0c;每道題10分&#xff0c;5-8章大概4題左右&#xff0c;后面的章節主要考的是概念題

多對多關聯映射(雙向)

關聯映射方面的最后一篇了&#xff0c;我覺得映射文件的編寫是使用hibernate的基礎&#xff0c;而關聯映射又是基礎的基礎&#xff0c;所以這方面分的細一些&#xff0c;羅嗦一些&#xff0c;說明白就好&#xff0c;呵呵。多對多關聯(雙向)&#xff0c;相對單向&#xff0c;在實…

sort-排座椅

題目描述 Description上課的時候總有一些同學和前后左右的人交頭接耳&#xff0c;這是令小學班主任十分頭疼的一件事情。不過&#xff0c;班主任小雪發現了一些有趣的現象&#xff0c;當同學們的座次確定下來之后&#xff0c;只有有限的D對同學上課時會交頭接耳。同學們在教室中…

JSONModel的基本使用

JSONModel 是一個庫,它能智能并且快速的創建出數據 model,你可以在你的 iOS 項目或者 OSX 項目上使用它。 使用前準備 添加 JSONModel 到你的工程中 1、需要的環境: ARC,iOS 5.0 / OSX 10.7 引入框架SystemConfiguration.framework2、獲取途徑&#xff1a; 1&#xff09;、通過…

圖像處理 伽瑪校正

http://blog.csdn.net/lichengyu/article/details/20840135 本質上是關于灰度的一個冪函數&#xff0c;當系數gamma大于1時&#xff0c;低灰度值的動態范圍減小&#xff0c;高灰度值的動態范圍增大&#xff0c;整體的灰度值減小&#xff1b;gamma小于1時則相反&#xff1b; 人…

matlab常用工具箱的調用指令

轉自:http://blog.sina.com.cn/s/blog_86186c970102va9g.html Matlab常用工具箱的調用命令 1. 優化工具箱?? 用途:優化問題 調用命令:在Command Window輸入“optimtool”?,其窗口如下 圖1 Optimization Tool? 2. 神經網絡工具箱? 用途:數據擬合、模式識別和分類…

tomcat起不來的問題已經解決

tomcat 起不來的問題:\apache-tomcat-6.0.10\bin 中startup.bat 起不來&#xff0c;一閃就沒了。說明&#xff1a;環境變量沒有配置好。解決辦法&#xff1a;配置環境變量&#xff1a;JAVA_HOME C:\Program Files\Java\jdk1.6.0_03就可以解決問題了本文轉自 yuwenhu 51CTO博客…

js寫法【3】

var m[];m[m.length]xx;//相當于push 對Repeat方法提供了8種寫法做比較&#xff0c;這一點還是不錯的。轉載于:https://www.cnblogs.com/baozhu/p/4862242.html

Eclipse設置控制臺日志輸出位置

1、選擇服務器配置 2、設置輸出文件路徑 轉載于:https://www.cnblogs.com/Neil223/p/5759693.html

現代制造工程——第七章(軋制和鍛造)

考點基于書本以及PPT的題目 一、軋制 二、鍛造

圖像邊緣梯度的定義

http://blog.csdn.net/u014020344/article/details/50196635

Jquery_JQuery之DataTables強大的表格解決方案

1、DataTables的默認配置 $(document).ready(function() { $(‘#example’).dataTable(); } ); 示例&#xff1a;http://www.guoxk.com/html/DataTables/Zero-configuration.html 2、DataTables的一些基礎屬性配置 “bPaginate”: true, //翻頁功能 “bLengthChange”: true, /…

內存管理1retain和release

Student.h: #import <Foundation/Foundation.h> interface Student : NSObject property int age; //默認會生成一個_age屬性 end Student.m: #import "Student.h" implementation Student //synthesize age_age;//xcode4.5中可以不使用synthesise方法&a…

目標檢測的圖像特征提取之(一)Hog特征提取

Hog特征實質是&#xff1a;梯度的統計信息,即針對邊緣作特征提取 意義&#xff1a;目標的表象和形狀 轉載于zouxy09大神的文章&#xff0c;加上自己些微的理解和應用&#xff01; http://blog.csdn.net/zouxy09/article/details/7929348/ 上述基本講清楚了&#xff0c;其實…

redis類型[string 、list 、 set 、sorted set 、hash]

1. Keys redis本質上一個key-value db&#xff0c;所以我們首先來看看他的key. 首先key也是字符串類型&#xff0c;但是key中不能包括邊界字符&#xff1b;由于key不是binary safe的字符串&#xff0c;所以像"my key"和"mykey\n"這樣包含空格和換行的key是…

matlab simulink筆記02——延遲模塊delay與單位延遲模塊unit delay

延遲模塊 單位延遲模塊 延遲模塊具有復位功能,當滿足復位條件時會進行復位操作,即輸出的值會恢復到初始值,而單位延遲模塊沒有復位功能; 延遲模塊的步長是可以設置的,而單位延遲模塊的步長固定為1,不可以改變

局域網傳輸速度升級

現在很多單位都建成了企業內部局域網&#xff0c;一般的企業網絡大多是使用雙 絞線連接網卡的方式來進行通信的。其中雙絞線通常采用的都是5類線&#xff0c;傳輸速率為100MB。而網卡則有一定的區別&#xff0c;很多網卡都是采取 10Mbps/100Mbmps自適應的網卡&#xff0c;即傳輸…

數據結構--棧 codevs 1107 等價表達式

codevs 1107 等價表達式 2005年NOIP全國聯賽提高組 時間限制: 1 s空間限制: 128000 KB題目等級 : 鉆石 Diamond題目描述 Description明明進了中學之后&#xff0c;學到了代數表達式。有一天&#xff0c;他碰到一個很麻煩的選擇題。這個題目的題干中首先給出了一個代數表達式&am…