1、java的RSA加密類用PHP怎么實現(xiàn),需要知道具體的實際效果或者類,原理我都是理解的
2、使用私鑰對信息生成數(shù)字簽名
3、字符拼接后進行下面執(zhí)行
4、sign的值正確的是
B0076C2O3J2Z%2BmBcYHUBmefpEioS3MgzTUbRdhcG3DhP9lv2DdggXyWWP7LozRiNidGiZbdvaIwf%0D%0A32h9DIWEFIjKrPQu1reOkz%2Ft69p6RDwR7tuFYvs6PXcoa%2Bd7RzKwZWu3z5JhoSJq7rNmKqr0Zwg%2F%0D%0A6D6G3SzE%2F4i1gEflNuM%3D
5、解決了,下面的答案,謝謝各位大佬
接續(xù)http_query的事,就不管了,只說RSA加解密、簽名和驗證的
<?php
namespace models\tool;
Class RSA {
const password = 'password';
const expires = 36500;
/**
*生成公鑰和私鑰,如果已經(jīng)有了,直接調(diào)用其它靜態(tài)方法就行了
*@param $publicKey 公鑰
*@param $privateKey 私鑰
*/
public function __construct(&$publicKey, &$privateKey) {
$dn = array (
"countryName" => 'CN',
"stateOrProvinceName" => 'bj',
"localityName" => 'bj',
"organizationName" => 'bjcom',
"organizationalUnitName" => 'bj',
"commonName" => 'beijing ',
"emailAddress" => 'user@beijing.beigjin.com'
);
//RSA encryption and 1024 bits length
$res_private = openssl_pkey_new(array (
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA
));
$res_csr = openssl_csr_new($dn, $res_private);
$res_cert = openssl_csr_sign($res_csr, null, $res_private, static::expires);
$res_pubkey = openssl_pkey_get_public($res_cert);
openssl_pkey_export($res_private, $privateKey);
$publicKeyDetail = openssl_pkey_get_details($res_pubkey);
$publicKey = $publicKeyDetail['key'];
}
/**
*@param $pubKey 公鑰
*@param $source 要加密的字符串
*/
public static function en($pubKey, $source) {
openssl_get_publickey($pubKey);
$crt = '';
$r = openssl_public_encrypt($source, $crt, $pubKey);
return $r === false ? false : base64_encode($crt);
}
/**
*@param $priKey 密鑰
*@pram $source 要解密的字符串
*/
public static function de($priKey, $source) {
$crypttext = base64_decode($source);
$res1 = openssl_get_privatekey($priKey, static::password);
$str = '';
$r = openssl_private_decrypt($crypttext, $str, $res1);
return $r === false ? false : $str;
}
/**
*@param $str 要簽名的字符串
*@param $priKey 私鑰
*/
public static function sign($str, $priKey) {
$priKeyRes = openssl_pkey_get_private($priKey);
openssl_sign($str, $signature, $priKeyRes, 'sha1WithRSAEncryption');
openssl_free_key($priKeyRes);
$signature = base64_encode($signature);
return $signature;
}
/**
*@param $str 被簽名的字符串
*@param $sign 簽名
*@param $pubKey 公鑰
*/
public static function verify($str, $sign, $pubKey) {
$pubKeyRes = openssl_get_publickey($pubKey);
$result = openssl_verify($str, base64_decode($sign), $pubKeyRes, 'sha1WithRSAEncryption');
openssl_free_key($pubKeyRes);
return $result;
}
}
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。