AES加密解密数据,RSA验证签名,项目做接口用到了加密解密算法,研究了下,搞定做下记录

<?php

//header(‘Content-Type: text/xml; charset=utf-8‘);

include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.‘phpsec‘.DIRECTORY_SEPARATOR.‘Math‘.DIRECTORY_SEPARATOR.‘BigInteger.php‘);
include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.‘phpsec‘.DIRECTORY_SEPARATOR.‘Crypt‘.DIRECTORY_SEPARATOR.‘AES.php‘);
include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.‘phpsec‘.DIRECTORY_SEPARATOR.‘Crypt‘.DIRECTORY_SEPARATOR.‘RSA.php‘);

//密文
$crypttext = ‘v66YKULHFld2JElhm/J9qik2Edr1JHdZIc/k/OesU2GbTX2usXyvF4jGvzvoihrrE8FsfKmllmjsMIjO5fdrS/FD20bYFii4JW3BO3bzshXmz6AEs2DWwG4sK9mNojfOC0IsMoV311X5/JlgUoQXkDy4F5HHpYE9d/xGb0g2XE/hnGSSy2cpQcvQtBlBmixwSckNhsEG92lovlOz8ULwkqG5o7x+qB7P/EMII/WaFAXBJXDXvZX7lmGcOgon6wLhKJLGXorP6BIxOg6LGc6Ux7BAt3i9+0lujNgxIq/sDsl23hsr3yOUpV5C5a813nrHx4HJyd/hBT1UvIUml+eTmJwWCpSfs2cvxIUr0CE57JAZVyXjK13shK3IsZHLPPsm/JcDCrdy0Co/d5uIGJAdzXdsQ56xsju+tlvnA1J6yq2tDIfYK/x6k911A5WXLKYxztD1nq+bTYN3Gv/WFfrzVtgWQBrh06ihS2cwvna0S9EV/YPmhnAjJmrX4trNr9NXQ9xaZaW4lGRg87U5QDV+nQjj1THk0XHFc69N9g2+DsAGyEs9tK6U0ZQ72hJZqZhBCDH1UKw0PLyIhJdxpgPPOWGp8/QVVU2julTeKunvgAAEc3n+GoZfqjsCDi1S6T2MTnjWYWNoFRBhvEZFD/revgpasTOzDQa5NqR1B+mUF70r6uw6MWLJ7cT9Tz3jq+CA‘;

$aeskey = base64_decode(‘qZe60QZFxuirub2ey4+7+Q==‘);

//AES解密,采用ECB模式
$aes = new Crypt_AES(CRYPT_MODE_ECB);
//设置AES密钥
$aes->setKey($aeskey);
//解密AES密文
$plaintext = $aes->decrypt(base64_decode($crypttext));

echo $plaintext;

echo ‘<hr />‘;

//AES加密明文
//echo $aes->encrypt($plaintext);

//rsa公钥
$publickey = ‘MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCffOeIVYut9jW5w1L5uKX4aDvd837a8JhaWm5S8YqNQfgEmfD9T+rDknXLqMT+DXeQAqGo4hBmcbej1aoMzn6hIJHk3/TfTAToNN8fgwDotHewsTCBbVkQWtDTby3GouWToVsRi1i/A0Vfb0+xM8MnF46DdhhrnZrycERBSbyrcwIDAQAB‘;
//echo base64_decode($publickey);
//rsa签名
$signature = ‘XHin4uUFqrKDEhKBD/hQisXLFFSxM6EZCvCPqnWCQJq3uEp3ayxmFuUgVE0Xoh4AIWjIIsOWdnaToL1bXvAFKwjCtXnkaRwUpvWrk+Q0eqwsoAdywsVQDEceG5stas1CkPtrznAIW2eBGXCWspOj+aumEAcPyYDxLhDN646Krzw=‘;
//echo base64_decode($signature);

$rsa = new Crypt_RSA();
//设置RSA签名模式 CRYPT_RSA_SIGNATURE_PSS or CRYPT_RSA_SIGNATURE_PKCS1
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
//var_dump($rsa->createKey());
//生成RSA公钥、私钥
//extract($rsa->createKey());
//使用RSA私钥生成签名
//$rsa->loadKey($privatekey);
//$signature = $rsa->sign($plaintext);
//使用RSA公钥验证签名
echo $plaintext;
$rsa->loadKey(base64_decode($publickey));
echo $rsa->verify($plaintext, base64_decode($signature)) ? ‘verified‘ : ‘unverified‘;

echo ‘<hr />‘;

//生成RSA公钥、私钥
//var_dump($rsa->createKey());
extract($rsa->createKey());
//使用RSA私钥加密数据
$rsa->loadKey($privatekey);
$ciphertext = $rsa->encrypt($plaintext);
//使用RSA公钥解密数据
$rsa->loadKey($publickey);
echo $rsa->decrypt($ciphertext);
时间: 2024-11-06 09:37:46

AES加密解密数据,RSA验证签名,项目做接口用到了加密解密算法,研究了下,搞定做下记录的相关文章

微信支付-加密、解密参数。验证签名方法。

微信并没有给ASP.net用户提供一个很好的实例,只好苦心研究,经过一个下午的努力和N次测试,终于知道如何解密和验签nofify的数据了,以下是我实现的代码,好东西需分享给各位朋友:(以下的商户编号我已经修改过,所以没有返回true,请根据自己的实际数据测试) using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Drawing; using System

前端加密数据后台解密之RSA算法实现

1.概述 前端时间与前端人员配合开发一款移动端WEB-APP,在各种因素的限制下,数据的安全性,让我为难,目前最可行和最直接的方式就是对所有用户敏感数据进行加密处理,然后传输到后端,解析处理.事先我尝试fiddler工具,拦截了APP所有的请求,结果发现不得不做安全处理了,至少先对这些数据加密处理.本文将讲述如何使用前端加密后端解密的过程,以及途中遇到的问题,如何解决. 2.选择加密算法 由于前端各种数据很容易被其他人获取,自然而然的选择的非对称加密,个人选择的是RSA算法.在确定好算法之后.最

Android开发周报:Android L默认加密用户数据

Android开发周报:Android L默认加密用户数据 新闻 <iCloud前车之鉴,Android L默认开启加密功能>:iCloud 艳照风波再起,第二波女星照片流出,大量女星的裸照又开始在社交网站疯传,本次大规模的“艳照门”依然有可能是黑客利用苹果iCloud云端系统的漏洞, 在破解了女艺人们所设的简单密码后侵入并非法盗取了裸照,继而在网络论坛发布.注重保护用户的隐私,是厂商们义不容辞的责任,谷歌宣布Android L上将默认加密用户数据. <苹果出了个指南教你怎么从Andro

易语言加密数据之后无法解密数据的问题

点击写配置按钮,直接把编辑框1的内容读取出来,然后加密数据,写到配置项里面,我选择的是DES加密. 读配置是读取配置文件,解密数据,写内容到编辑框1,但是这时解密失败了,在网上百度了一下,发现,加密后的数据 (也就是字节集),不能直接到文本,需要先用Base64编码,否则就会解密失败.(RC4加密 我测试了下 是不用编码的) 下面是加密解密成功的代码: .版本 2.支持库 xplib.支持库 dp1 .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 XP风格 (#绿色风格) .子

RSA公钥加密—私钥解密&amp;私钥加密—公钥解密&amp;私钥签名—公钥验证签名

关于RSA算法,前面有介绍,点击打开链接. 这里直接有实现. 代码太多就不直接贴了,免积分下载. http://download.csdn.net/detail/acmjk/7310847 RSA公钥加密-私钥解密&私钥加密-公钥解密&私钥签名-公钥验证签名,布布扣,bubuko.com

RSA加密解密及RSA签名和验证

原文:RSA加密解密及RSA签名和验证 1.RSA加密解密: (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密2.RSA签名和验证 (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)获取待签名的Hash码 (3)获取签名的字符串 (4)验证 3.公钥与私钥的理解: (1)私钥用来进行解密和签名,是给自己用的. (2)公钥由本人公开,用于加密和验证签名,是给别人用的.   (3)当该用户发送文件时,用私钥签名,别人用他给的公

RSA加密解密及RSA签名和验证及证书

公钥是给别人的 发送密文使用公钥加密 验证签名使用公钥验证 私钥是自己保留的 接受密文使用私钥解密 发送签名使用私钥签名 上述过程逆转是不行的,比如使用私钥加密,使用公钥解密是不行的 证书的制作参考自使用X.509数字证书加密解密实务(一)-- 证书的获得和管理 打开VS开发命令,输入下面的命令: makecert -sr CurrentUser -ss My -n CN=MyTestCert -sky exchange -pe 从证书中读取私钥和公钥: /// <summary> /// 根

利用openssl生成公钥、私钥 Rsa加密、解密及验证签名

//获取公钥私钥 X509Certificate2 c4 = DataCertificate.GetCertFromCerFile(path + "\\cer\\xx.pem"); string PublicKey = c4.PublicKey.Key.ToXmlString(false);//公钥 X509Certificate2 c3 = DataCertificate.GetCertificateFromPfxFile(path + "\\cer\\yy.pfx&quo

C#自定义RSA加密解密及RSA签名和验证类实例

本文实例讲述了C#自定义RSA加密解密及RSA签名和验证类.分享给大家供大家参考.具体分析如下: 这个C#类自定义RSA加密解密及RSA签名和验证,包含了RSA加密.解密及签名所需的相关函数,带有详细的注释说明. using System; using System.Text; using System.Security.Cryptography; namespace DotNet.Utilities { /// <summary> /// RSA加密解密及RSA签名和验证 /// </