python RSA+MD5签名demo:

 #!/usr/bin/env python2.7
#coding:utf-8 import base64
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA,MD5 TEST_PRIKEY='''-----BEGIN RSA PRIVATE KEY-----
MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmXug8cAahQfFpHYGe3K9gHsBvhnD
VlfR+SkfVQ8pLFEeQGWu7C0xKLNgzkBKP8A9y9j+Zoyv1irPRJvasgR3uwIDAQABAkAN6AezH8bH
Wubrec4ojULiS0LjKI5sWlSqELHIETGX1DXPrkx61AojZGFdO+4rINkXgix5sQAkeExlWml8EMph
AiEAx4gOPVfATGBm7AWS74geXFaA0ONegSJy1i5oUJnHm/MCIQDE62Gyi1lzmCnC63S7EgmvbtK0
BzZhgs95k3NPLtEPGQIhAJQJ7ga1RIdmPvZ+bDYr19rKk2hoSYWl+W3PoLWsYtzhAiAWwGtlSZxo
MqiAkNvH0Wm1D0Tg8ARkd8yo61RjTbFx4QIgAzEzc/MYJubgOqjGB91Bo/GIWyx1NEmBstdA3G5W
f08=
-----END RSA PRIVATE KEY-----''' TEST_PUBKEY='''-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJl7oPHAGoUHxaR2BntyvYB7Ab4Zw1ZX0fkpH1UPKSxR
HkBlruwtMSizYM5ASj/APcvY/maMr9Yqz0Sb2rIEd7sCAwEAAQ==
-----END PUBLIC KEY-----''' def sign(data,priKey=None):
if priKey==None:
priKey=TEST_PRIKEY
key = RSA.importKey(priKey)
h = MD5.new(data)
# print h
signer = PKCS1_v1_5.new(key)
signature = signer.sign(h)
# print signature
return_ret= base64.b64encode(signature)
# print return_ret
return return_ret def verify(data, signature, DEBUG=False):
if DEBUG:
pubKey=TEST_PUBKEY
else:
pubKey=''
if not data:
return False
if not signature:
return False
key = RSA.importKey(pubKey)
h = MD5.new(data)
verifier = PKCS1_v1_5.new(key)
if verifier.verify(h, base64.b64decode(signature)):
return True
return False if __name__ == '__main__':
test_byte = 'test_abc'
print test_byte
sign_data = sign(test_byte)
print sign_data
print verify(test_byte, sign_data, DEBUG=True)

RSA签名加密及验证

PHP RSA+MD5签名demo:

 <?php
ini_set('error_reporting', -1);
ini_set('display_errors', -1); header('Content-Type: text/html; charset=utf-8'); # openssl genrsa -out rsa_private_key.pem 1024
# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem $private_key = file_get_contents("rsa_private_key.pem");
$public_key = file_get_contents("rsa_public_key.pem"); $data = 'test_abc'; $res = openssl_get_privatekey($private_key);
openssl_sign($data, $sign, $res, OPENSSL_ALGO_MD5);
openssl_free_key($res);
$encrypt = base64_encode($sign);
echo $encrypt,"\n";

PHP RSA签名 rsa_demo.php

PS:PHP 加密方法openssl_sign API:http://php.net/manual/zh/function.openssl-sign.php

Signature Algorithms 参数可以直接指定 OPENSSL_ALGO_MD5

RSA签名 python PHP demo 例子的更多相关文章

  1. PHP 做 RSA 签名 生成订单(支付宝例子)

    /组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16 ...

  2. RSA签名验签学习笔记

    RSA私钥签名时要基于某个HASH算法,比如MD5或者SHA1等.之前我一直认为签名的过程是:先对明文做HASH计算,然后用私钥直接对HASH值加密.最近才发现不是那么简单,需要对HASH后的数据进行 ...

  3. RSA签名的PSS模式

    本文由云+社区发表 作者:mariolu 一.什么是PSS模式? 1.1.两种签名方式之一RSA-PSS PSS (Probabilistic Signature Scheme)私钥签名流程的一种填充 ...

  4. 支付宝RSA签名

    1.参考网上相关文章,开放php中的openssl,但使用网上例子调用openssl_pkey_new,一直报100013错误.后改用用支付宝提供的SDKdemo程序 发现使用提供的privkye,可 ...

  5. 一个基于RSA算法的Java数字签名例子

    原文地址:一个基于RSA算法的Java数字签名例子 一.前言: 网络数据安全包括数据的本身的安全性.数据的完整性(防止篡改).数据来源的不可否认性等要素.对数据采用加密算法加密可以保证数据本身的安全性 ...

  6. erlang的RSA签名与验签

    1.RSA介绍 RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对 其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而 ...

  7. .net core AES加密解密及RSA 签名验签

    引用 using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using Sy ...

  8. RSA签名验签

    import android.util.Base64; import java.security.KeyFactory; import java.security.PrivateKey; import ...

  9. java/php/c#版rsa签名以及java验签实现--转

    在开放平台领域,需要给isv提供sdk,签名是Sdk中需要提供的功能之一.由于isv使用的开发语言不是单一的,因此sdk需要提供多种语言的版本.譬如java.php.c#.另外,在电子商务尤其是支付领 ...

随机推荐

  1. iOS 阿里百川SDK集成注意点

    百川SDK是阿里系OneSDK的终极版本,里面包含了所有的阿里系的基本所有的SDK,集成的时候你只需要勾选对应的你需要的模块,然后生成对应的SDK即可,百川主要是针对帮助APP开发者在各种场景下快速. ...

  2. OpenCV学习笔记:opencv_ml模块

    一,简介 该模块为opencv的机器学习(machine learning,ml)代码库,包含各种机器学习算法: 0, class CvStatModel ; class CvMLData; stru ...

  3. eclipse4.2+安装modelgoon插件,该插件支持在eclipse直接依据java文件生产类图

    安装条件: 1. 确保JDK环境OK 2.该插件安装是基于eclipse kepler(4.2) (并非表示其它版本号不能安装,仅仅是博主仅仅在4.2版本号上測试了.预计4.3版本号还是支持的,可是3 ...

  4. SharePoint server 2016中文版导出list template,在另外一个环境不能显示

    SharePoint server 2016中文版导出list template,在另外一个环境不能显示,解决方案: $web = Get-SPWeb <url of web> $web. ...

  5. 一个有趣的IP不同的问题?

    1.我们已经知道了内网和外网的显示是不同的. 2.今天发现了我的飞Q传输上显示的ip和电脑上网络中显示的ip不同,但是传输文件是可以的,至于这个问题目前没有找到合理的解释,解释这个问题,但是这样就奇怪 ...

  6. crontab 问题分析 - CSDN博客 https://blog.csdn.net/tengdazhang770960436/article/details/50997297

    cd /mnt/tools/trunk/plugins/personas; python update_keywords.py crontab 问题分析  crontab 问题分析 - CSDN博客 ...

  7. $(document).ready() $(window).load 及js的window.onload

    1.$(document).ready()  简写为$(function(){}) DOM结构绘制完成执行,而无需等到图片或其他媒体下载完毕. 2.$(window).load  在有时候确实我们有需 ...

  8. window7系统下安装scrapy爬虫框架

    本文是在python3.6环境下安装的下面软件,如果大家和我的python版本不一致,请在页面选择符合自己版本的软件下载. 1.wheel pip install wheel 2.lxml 下载lxm ...

  9. 我的Android进阶之旅------>Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi")

    Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi") 例如:AndroidManifest.xml中,我们配置了sdk版本的 ...

  10. 001infor record 计划时间取值增强-20150622

    ZMD_MRP_PARAMETERS 3000公司下工厂跑MRP时,如果为外购则通过外挂表取infor record计划交期. METHOD if_ex_md_mrp_parameters~adjus ...