新浪微博登录密码加密函数 wsse加密算法说明
- // 新浪微博登录密码加密函数
- // password 密码明文
- // servertime 提交的参数之一
- // nonce 提交的参数之一
- // encode_password 输出的加密后的16进制字符串,40个字符
- // 返回 encode_password 的长度, 失败则返回0
- PASSENCODE_API int SinaSha1Encode(char *password, char *servertime, char *nonce, char *encode_password)
- {
- if (encode_password)
- {
- encode_password[0]=NULL;
- //定义要sha1的字符串
- char pTemp[400]={0};
- //定义返回的sha1值
- char szHash[41] ={0};
- strcpy(pTemp,password);
- SHA1((unsigned char*)pTemp, szHash, 41);
- strcpy(pTemp,szHash);
- SHA1((unsigned char*)pTemp, szHash, 41);
- strcpy(pTemp,szHash);
- if (servertime) strcat(pTemp,servertime);
- if (nonce) strcat(pTemp,nonce);
- SHA1((unsigned char*)pTemp, szHash, 41);
- strcpy(encode_password,szHash);
- return strlen(encode_password);
- }
- return 0;
- }
- //登陆伪代码
- //***********************************************
- ByteBuffer bytes;
- string url;
- string username="zhanghao@sina.com";
- string password="mima";
- string encode_password;
- url="http://login.sina.com.cn/sso/prelogin.php?&entry=sso&username=";
- url+=username;
- url+="&callback=parent.sinaSSOController.loginCallBack";
- BOOL bHtmlText;
- BOOL bUTF8;
- string retcode;
- string servertime;
- string nonce;
- if (GetUrlData(url.c_str(),bytes,NULL,0,bHtmlText,bUTF8) && bytes.getLength() && bHtmlText)
- {
- string str=bytes.c_str();
- string::size_type pos(0),posend(0);
- if( (pos=str.find("{",posend))!=string::npos && (posend=str.find("}", ++pos))!=string::npos )
- {
- string result=str.substr(pos,posend-pos);
- replace_all(result,"\"","");
- TRACE(result.c_str());
- vector<string> vars;
- Split(result,vars,",");
- if (vars.size())
- {
- for (int i=0;i<vars.size();i++)
- {
- vector<string> keys;
- Split(vars[i],keys,":");
- if (keys.size()==2)
- {
- if (keys[0]=="retcode")
- {
- retcode=keys[1];
- }else
- if (keys[0]=="servertime")
- {
- servertime=keys[1];
- }else
- if (keys[0]=="nonce")
- {
- nonce=keys[1];
- }else{
- TRACE("key:%s val:%s",keys[0].c_str(),keys[1].c_str());
- }
- }
- }
- }
- }
- }
- if (atoi(retcode.c_str())==0)
- {
- EncodePasword(password,servertime,nonce,encode_password);
- TRACE("servertime:%s",servertime.c_str());
- TRACE("nonce:%s",nonce.c_str());
- TRACE("encode_password:%s",encode_password.c_str());
- url="http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.12)";
- string post;
- /*
- service=miniblog&client=ssologin.js%28v1.3.12%29&entry=miniblog&encoding=utf-
- 8&gateway=1&savestate=7&from=&useticket=1&username=diyiwl@sina.com&servertime=1306503150&nonce=IN4GY9&pwencode=wsse&password=74dd6f5f82e027412b6da345909f0df450b5f410&url=http%
- 3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack&returntype=META&ssosimplelogin=1
- */
- post="service=miniblog&client=ssologin.js%28v1.3.12%29&entry=miniblog&encoding=GB2312&gateway=1&savestate=7&from=&useticket=1&username=";
- post+=username;
- post+="&servertime=";
- post+=servertime;
- post+="&nonce=";
- post+=nonce;
- post+="&pwencode=wsse&password=";
- post+=encode_password;
- post+="&url=http%3A%2F%2Fweibo.com%2Fajaxlogin.php%3Fframelogin%3D1%26callback%3Dparent.sinaSSOController.feedBackUrlCallBack&returntype=META&ssosimplelogin=1";
- TRACE(url.c_str());
- TRACE(post.c_str());
- if (GetUrlData(url.c_str(),bytes,post.c_str(),post.length(),bHtmlText,bUTF8) && bytes.getLength() && bHtmlText)
- {
- TRACE(bytes.c_str());
- }
- }
- //**********************************************
其中username是你的用户名。
获取到我们需要的内容后,接下来就是加密的过程了。加密使用的是通用的SHA1加密算法:
- 把密码进行一次SHA1加密,结果再进行一次SHA1加密
- 把经过两次SHA1加密的结果附上servertime,nonce再进行一次SHA1加密
- 加密的结果作为登录密码
但参数要复杂一点了:
service:选择服务,我们这里使用的新浪微博:miniblog
client:ssologin.js%28v1.3.12%29
entry:miniblog
encoding:utf-8
gateway:1
savestate:0
useticket:1,这里使用到了登录票据。
username:你的用户名
servertime:上步得到的服务器时间
nonce:上步得到的随机字符串
pwencode:wsse(没整明白是个什么东西,不过从来不变)
password:加密后的密码
url:一个回调地址
returntype:META(使用中没有发生变化)
ssosimplelogin:1
c3d2&url:http://www.baidu.com&returntype:META&ssosimplelogin:1
转载于:https://www.cnblogs.com/codemo/archive/2012/09/07/wsse.html
新浪微博登录密码加密函数 wsse加密算法说明相关推荐
- 新浪微博登录密码加密函数
// 新浪微博登录密码加密函数 // password 密码明文 // servertime 提交的参数之一 // nonce 提交的参数之一 // encode_password 输出的加密后的16 ...
- 登录密码加密,RSA加密算法
公钥加密,私钥解密 前端:密文RSA公钥加密,得到base64编码的加密密文,jsencrypt.min.js var publicKey = "MIGfMA0GCSqGSIb3DQEBAQ ...
- jemter-测试登录密码加密的情况
jemter-测试登录密码加密的情况 废话不多说,直接上截图 1.先添加cookie管理器.请求头管理器.以及用户定义变量. 利用抓包工具fiddler,找到表头重要的信息,至于cookie管理器一样 ...
- crypt密码加密函数的基本用法
定义函数 char * crypt (const char *key,const char * salt); 函数说明 crypt是个密码加密函数,它是基于Data Encryption Standa ...
- SpringBoot+2次MD5登录密码加密+MyBatisPlus+Thymeleaf+Bootstrap简单实现登录功能,一文轻松搞定!
这里写目录标题 一.演示GIF 二.开发前期准备 1.数据库 2.依赖POM.XML 3.idea结构目录 三.后端 1.实体类 2.mapper接口 3.mapper.xml 4.Servicce接 ...
- php+$2y$10,PHP 用户密码加密函数password_hash
PHP 用户密码加密函数password_hash PHP 用户密码加密函数password_hash 传统的用户名和密码都采用加盐的方式存储加密信息,盐值也需要存储. 自PHP5.5.0之后,新增加 ...
- Python_49模块及模块导入_OS模块_SYS模块_hashlib模块_用户登录密码加密验证的例子...
一个py文件就可以是一个模块 Python导入模块名的查找:先去该文件目录下找 Pycharm 里面查找 安装包查找 import 自写模块的时候需要把模块的全部地址尽量写出写全 例如:模块 ...
- 关于登录密码加密的三个方式
登录密码对于用户来说是最重要的数据,所以在存储的时候需要进行加密,防止在一些外部攻击下用户重要数据被别人获取了.对于登录密码加密,本人整理了三种简单的方式. 具体思路如下: 一.数据库加密 1.在后端 ...
- 常见登录密码加密方式
目录 1 常见的加密方式 1.1.可逆加密算法 1.1.1. 对称加密 1.1.2. 非对称加密 1.2.不可逆加密算法 1.3.Base64编码 2 密码加密的方式选型 2.1 MD5密码加密 2. ...
最新文章
- Mysql HA实现MYSQL的高可用
- array_keys
- UA MATH636 信息论8 线性纠错码
- Java对存储过程的调用方法 --转载
- ArcMap中的名称冲突问题
- mysql dodba_doDBA
- 修改 MyEclipse 编辑区域背景颜色
- Powershell下设置环境变量
- docker容器部署的应用启动日志在哪里看_在SAP云平台上部署和运行Docker应用
- 使用C++生成条形码
- dubbo之failed to connect to server /xx.xx.xx.xx:20880 client-side timeout问题解决
- linux输入法图标不见了,桌面上右下角的输入法图标不见了 怎么找回?
- 江苏科技大学MATLAB考试,江苏科技大学精品课程申报表.DOC
- Slwave运行仿真时被终止,没有出现提示错误。
- 随手口袋记APP支持
- linux防火墙关闭与启动命令
- 【2018-11-09】中证500指数的估值详情
- Java学习-节点3
- Note For Linux By Jes(1)-Linux 的文件权限与目录配置
- linux usb3 转hdmi,USB TYPE-C转HDMI+PD3.0+USB3.0/USB3.1多功能扩展坞设计方法和设计电路...
热门文章
- Google Map API V3调用arcgis发布的瓦片地图服务
- sae上部署第一个站
- 如何设置SQL Server 全文搜索
- docker删除es数据_Docker的常用命令
- Linux 操作系统原理 — 网络 I/O 虚拟化
- C 语言编程 — 堆栈与内存管理
- 用 Flask 来写个轻博客 (10) — M(V)C_Jinja 常用过滤器与 Flask 特殊变量及方法
- 使用MLX90640自制红外热像仪(一):MLX90640介绍与API库移植
- Keil中调试时Watch窗口变量不实时显示
- 零基础学UI设计,哪些知识需要重点学习?