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

最新文章

  1. java接口中多继承的问题
  2. css伪元素选择器(伪对象选择器)checked + 伪元素练习
  3. std::stringstream
  4. Windows API学习---用户方式中的线程同步
  5. 【dp】 poj 1953
  6. Natas Wargame Level 16 Writeup(Content-based Blind SQL Injection)
  7. appium整理文档
  8. Problem L
  9. public private protected default小结
  10. 《Effective C++》设计与声明:条款18-条款25
  11. 使用Git Subtree在多个项目中共用同一个子项目
  12. Python全栈学习_day001知识点
  13. LOJ #6074. 「2017 山东一轮集训 Day6」子序列
  14. Windows不能在本地计算机启动MongoDB,错误代码 100
  15. java锁在等待唤醒机制中作用
  16. 第9章 应用层(1)_域名系统DNS
  17. 转一个Visual Stuido 快捷键
  18. 解决Failed to load the JNI shared library xxx/xxx/jvm.dll 错误
  19. vijos 1659 河蟹王国 线段树区间加、区间查询最大值
  20. jsp获取请求头信息

热门文章

  1. Python gevent学习笔记
  2. 12个十分实用的JavaScript小技巧
  3. java访问权限修饰符,一张图搞清楚
  4. VMware Workstation网卡不启动
  5. 集成 SOLR 到 TOMCAT 中(傻瓜教程)
  6. bfs_迷宫求最短路径
  7. stochastic matrix
  8. 为什么调用 GdiplusShutdown 函数会在 DllExports::GdipDeleteGraphics(nativeGraphics) 位置抛出异常?
  9. MySQL中Index Condition Pushdown(ICP)优化
  10. tomcat 的 Pipeline 机制