1.生成rsa密钥对
生成私钥
openssl genrsa -out rsa_private_key.pem 1024
将rsa私钥转换成PKCS8格式,java使用
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
生成公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成js使用的公钥
openssl rsa -pubin -inform PEM -modulus -noout < rsa_public_key.pem
需要引用的类库请查看我上传的文件
js相关代码
var pubkey = 'asdf';
setMaxDigits( 1024 );
var key = new RSAKeyPair( '10001', '', pubkey );
var text = '1';
base64text = $.base64.encode( text );
var encryptedtext = encryptedString( key, base64text );
php相关代码
public static function RsaDecrypt( $data, $method = 3 ) {
$result = '';
$privatekey = '';
$padding = 0;
// 获取私钥、解密方式, 转化数据
switch ( $method ) {
case 3: // HTML
$privatekey = openssl_pkey_get_private( self::$JsPrivateKey );
if ( !$privatekey ) {
return '';
}
$padding = OPENSSL_NO_PADDING;
$data = pack( 'H*', $data );
break;
break;
}
// 解密
if ( openssl_private_decrypt( $data, $decrypted, $privatekey, $padding ) ) {
if ( $method == 3 ) {
$result = base64_decode( rtrim( strrev( $decrypted ), "/0" ) );
} else {
$result = urldecode( trim( $decrypted ) );
}
}
return $result;
}