sign

动手实现对外安全的接口(改进篇)

戏子无情 提交于 2020-02-06 10:33:39
文章目录 上一篇博客 前言 show you the code get处理方法 post处理方法 参考博客 上一篇博客 动手实现对外安全的接口(写于天寒地冻的正月初九) 前言 感谢我一位阿里的安全大佬朱哥,在我发第一篇博客的时候进行指点。 我对上一篇不足之处进行总结一下: 加密过程太过简单,我上一篇博客也谈到需要改进,其中包括appSecret等等也加入到签名里面。 时间戳的问题也要加入进去,防止数据篡改。时间戳的问题是防止数据重放 加密算法需要再改进,MD5需要加点salt等等 参数需要排序,这个有点出入。因为一般来说内部接口使用类进行传输参数,可以重写类的toString()方法来规范参数的排序。但是有个缺陷是:无法通配到不是按对象来接收的参数,这时就重写不了toString了,只能我们手动去排序。 show you the code get处理方法 new 拦截器 import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import com.alibaba.fastjson.JSON; import org.springframework

php 微信 统一下单 接口实例

青春壹個敷衍的年華 提交于 2020-02-06 00:23:14
<?php class wechatAppPay { //接口API URL前缀 const API_URL_PREFIX = 'https://api.mch.weixin.qq.com'; //下单地址URL const UNIFIEDORDER_URL = "/pay/unifiedorder"; //查询订单URL const ORDERQUERY_URL = "/pay/orderquery"; //关闭订单URL const CLOSEORDER_URL = "/pay/closeorder"; //公众账号ID private $appid; //商户号 private $mch_id; //随机字符串 private $nonce_str; //签名 private $sign; //商品描述 private $body; //商户订单号 private $out_trade_no; //支付总金额 private $total_fee; //终端IP private $spbill_create_ip; //支付结果回调通知地址 private $notify_url; //交易类型 private $trade_type; //支付密钥 private $key; //证书路径 private $SSLCERT_PATH; private $SSLKEY

Android build apk: control MANIFEST.MF

痞子三分冷 提交于 2020-02-02 11:22:25
问题 Android build apk: Suppose an apk contains a library jar(e.g. foo.jar) that has META-INF/MANIFEST.MF, which is important for it to function. But in APK there is a MANIFEST.MF that contains signing data, and the lib jar MANIFEST.MF is lost. APK META-INF/MANIFEST.MF Is there a way to add more attributes to the MANIFEST.MF or merge lib jar MANIFEST.MF into it? UPDATE After unpacking apk, adding some attributes to MANIFEST.MF and repacking apk, packageDebug { doLast { // add attributes to

Android build apk: control MANIFEST.MF

℡╲_俬逩灬. 提交于 2020-02-02 11:22:09
问题 Android build apk: Suppose an apk contains a library jar(e.g. foo.jar) that has META-INF/MANIFEST.MF, which is important for it to function. But in APK there is a MANIFEST.MF that contains signing data, and the lib jar MANIFEST.MF is lost. APK META-INF/MANIFEST.MF Is there a way to add more attributes to the MANIFEST.MF or merge lib jar MANIFEST.MF into it? UPDATE After unpacking apk, adding some attributes to MANIFEST.MF and repacking apk, packageDebug { doLast { // add attributes to

scikit-learn使用笔记与sign prediction简单小结

偶尔善良 提交于 2020-01-29 02:19:47
经Edwin Chen的推荐,认识了 scikit-learn 这个非常强大的python机器学习工具包。这个帖子作为笔记。(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省若干分钟)。如果有幸此文被想用scikit-learn的你看见,也还是非常希望你去它们的 主页 看文档。主页中最值得关注的几个部分:User Guide几乎是machine learning的索引,各种方法如何使用都有,Reference是各个类的用法索引。 S1. 导入数据 大多数数据的格式都是M个N维向量,分为训练集和测试集。所以,知道如何导入向量(矩阵)数据是最为关键的一点。这里要用到numpy来协助。假设数据格式是: Stock prices indicator1 indicator2 2.0 123 1252 1.0 .. .. .. . . . 导入代码参考: import numpy as np f = open("filename.txt") f.readline() # skip the header data = np.loadtxt(f) X = data[:, 1:] # select columns 1 through end y = data[:, 0] # select column 0, the stock price libsvm格式的数据导入:

PHP APP端支付宝支付

試著忘記壹切 提交于 2020-01-29 01:27:48
应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,实际开发过程是前后端分离,前端调用后端API接口,实现功能返回数据,我所用的跨挤啊为TP5,大致可以分为四步: 1.在 蚂蚁金服开放平台 创建应用,签约商户,生成应用公钥和私钥; 2.配置统一下单支付参数; 3.整合支付宝demo类文件; 4.创建Alipay支付类,类内创建两个方法(alipay_app:统一下单方法和alipay_notify:支付成功异步回调方法); 第一步主要是在蚂蚁金服开放平台登录你的支付宝账号,接入支付功能,个人就选个人,服务商就选服务商,需要填写一些材料,如手机号,邮箱等,完成后就可以创建应用啦,创建应用完成后需要进行签约,只有签约之后你应用里面开放的支付功能才会生效,签约也需要填一堆信息,签约需要审核,成功后你会拿到一个2088开头partner值,这个第三步配置参数的时候需要用到,之后还要为你的应用生成公钥和私钥,这点在 开放平台开发文档 中有详细描述,下载生成秘钥工具,选择对应的秘钥类型,秘钥和公钥一定要保存好,这里就不多做赘述啦,到此开放平台的准备工作就结束了。 第二步就是整合支付宝demo文件了,我这里已经整合好了,直接把代码复制到两个文件中就可以了,一个为支付类,一个为通知类: /*此为支付类*/ class AlipayApp{ /** * 把数组所有元素

网站转接支付宝解决方案

拜拜、爱过 提交于 2020-01-28 11:27:37
大型网上购物系统除了能让会员选择货到付款结账方式外,还应该提供一些更方便快捷的网上支付方式。如果网上商店没有足够的实力提供会员直接在网站中建立现金账户的功能,就可以将订单信息转接到支付宝,让会员从支付宝付款。当然就算会员可以在网站上建立自己的现金账户,提供支付宝支付功能也不失为另一种方便快捷的支付方式,这可以给客户提供更多可选的支付方式。 首先,网上购物系统必须与支付宝公司签订合作协议,以确保从本购物网站上传到 支付宝网站上的订单信息能被正确接收。 当会员于购物网站上买下一系列商品并选择支付宝付款方式后,购物系统即将会员购物的订单信息转发到支付宝,网站页面也会转到支付宝的付款页面。此时,支付宝页面会发送一个验证信息到本网站以确认支付宝正确收到订单信息。 会员于支付宝网站付款完成后,网站页面会重新跳回本购物网站,同时支付宝会将已付款的订单信息发回本网站以便对本购物网站的数据库进行必要的修改操作。另外本网站还需要向支付宝网站发送一个返回信息,告知支付宝本系统已正确收到付款完毕的订单信息并且已经完成对数据的处理操作。 向支付宝网站传送订单信息时主要参数的含义: gateway :支付接口 service:识别是何接口实现何功能的表示 seller_email:商家签约时的支付宝账号,即收款的支付宝账号 key:安全校验码,与partner是一组 partner:商户ID,合作伙伴ID

Git中的Sign Off功能是什么?

試著忘記壹切 提交于 2020-01-28 05:23:26
Git 中的 Sign Off功能有 什么意义? git commit --signoff 我什么时候应该使用它,如果有的话? #1楼 签名是提交消息末尾的一行,用于证明谁是提交的作者。 其主要目的是改善对谁做了什么的追踪,尤其是补丁。 提交示例: Add tests to statement printer. Signed-off-by: Super Developer <super.dev@gmail.com> 如果用于开源项目,它应包含用户真实姓名。 如果分支维护者需要稍微修改补丁以便合并它们,他可以要求提交者重新启动,但这会适得其反。 他可以调整代码并在最后签名,以便作者仍然可以获得补丁,而不是引入的错误。 Add tests to statement printer. Signed-off-by: Super Developer <super.dev@gmail.com> [uber.dev@gmail.com: Renamed test methods according to naming convention.] Signed-off-by: Uber Developer <uber.dev@gmail.com> 资料来源: http : //gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby

模拟操作系统的存储系统实验(Java语言描述)

天大地大妈咪最大 提交于 2020-01-26 18:07:53
模拟分页式存储管理中硬件的地址转换和产生缺页中断 (1)分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为: 标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号——用来表示已经装入主存的页所占的块号。 在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。 (2)作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式: 绝对地址=块号×块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。按计算出的绝对地址可以取到操作数,完成一条指令的执行。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,由操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。 (3)设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“

BZOJ 1038. [ZJOI2008]瞭望塔

与世无争的帅哥 提交于 2020-01-25 15:20:13
能看到其他所有点的区域就是轮廓线的半平面交。 然后最小高度就是半平面交与轮廓线这两个一次分段函数的差,极值肯定出现在分段点上,分别求一下即可。 #include <bits/stdc++.h> #define db double const db eps = 1e-9; inline int sign(db k) { return k < -eps ? -1 : k > eps; } inline int cmp(db k1, db k2) { return sign(k1 - k2); } struct P { db x, y; P() {} P(db x, db y): x(x), y(y) {} P operator + (const P &rhs) const { return P(x + rhs.x, y + rhs.y); } P operator - (const P &rhs) const { return P(x - rhs.x, y - rhs.y); } P operator * (const db &k) const { return P(x * k, y * k); } P operator / (const db &k) const { return P(x / k, y / k); } bool operator < (const P &rhs)