MD5

MD5即Message-Digest Algorithm (信息-摘要算法5),用于确保信息传输完整一致。

是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

API验签

签名时,根据参数名称,将除签名(sign)外所有请求参数按照字母先后顺序排序: key + value .... key + value 。
注:
、排序若首字母相同,则对第二个字母进行排序,以此类推。
、value无需编码。
、对于非必选参数,如果没有value值,也参与签名。(说明:非必选参数没有value值时,将参数名放到字符串中,即参数名要参加签名)
例如:将“foo=,bar=,baz=三”排序为“bar=,baz=三,foo=”参数名和参数值链接后,得到拼装字符串bar2baz三foo1。
、在传入参数有数组时,比如 cartypelist [,] 则: 签名:cartypelist1,

签名算法

将分配的得到的密钥(SecretKey)接到参数字符串尾部进行md5加密,再转化成大写,
格式是:md5(key1value1key2value2...Secret)。

由于在使用MD5加密的过程中发现两种加密算法生成的MD5值竟然不一样

算法一,推荐

        public static string GetMd5String(string source)
{
MD5 mD = MD5.Create();
UTF8Encoding uTF8Encoding = new UTF8Encoding();
byte[] bytes = uTF8Encoding.GetBytes(source);
byte[] array = mD.ComputeHash(bytes);
StringBuilder stringBuilder = new StringBuilder(); byte[] array2 = array;
for (int i = ; i < array2.Length; i++)
{
byte b = array2[i];
stringBuilder.Append(b.ToString("x2"));
}
return stringBuilder.ToString();
}

算法二

        /// <summary>
/// 获得32位的MD5加密
/// </summary>
/// <param name="input">输入字符串</param>
/// <returns>返回值</returns>
public static string GetMD532(string input)
{
MD5 md5 = MD5.Create();
byte[] data = md5.ComputeHash(Encoding.Default.GetBytes(input));
var sb = new StringBuilder();
for (int i = ; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2"));
}
return sb.ToString();
}

由于编码不同,一个是UTF8编码,一个是默认编码,导致有汉字的时候,会产生不同的加密结果。

所以建议在有汉字的消息编码里对汉字进行Unincode编码,或者统一编码方法。

【MD5加密】MD5加密编码的坑的更多相关文章

  1. 那些年java MD5加密字符编码的坑

    相信做过MD5加密的童鞋都遇到过字符编码的坑,一般加密出来的结果和其他人不一样都是字符编码不一致导致的,比如类文件的字符编码.浏览器的字符编码等和对方不一致,所以就需要转码统一字符. 以下是笔者转码过 ...

  2. C# MD5 32位加密 UTF-8编码

    项目开发过程中需要用到MD5加密,最开始的使用使用加密方法: public static string GetMD5(string str)        {            byte[] b ...

  3. qt md5加密,base64编码解码

    qt md5加密,base64编码解码 md5加密 QByteArray data = "12121221"; data += "asdfas"; QByteA ...

  4. MD5加密与base64编码

    转自:http://blog.csdn.net/sxzlc/article/details/74127268 import java.io.UnsupportedEncodingException; ...

  5. Java 加密 MD5

    版权声明:本文为博主原创文章,未经博主允许不得转载. [md5] md5是一种哈希算法,哈希算法是啥? ... 特点是不能解密. [代码] package com.uikoo9.util.encryp ...

  6. C#、WinForm、ASP.NET - Md5散列加密

     MD5值概念解释: 转载自:http://free0007.iteye.com/blog/2047163 所 谓MD5,即"Message-Digest Algorithm 5(信息-摘要 ...

  7. Linux下使用MD5加密BASE64加密

    这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...

  8. hashlib —— Python 的 md5 和 sha1 加密

    python的md5和sha1加密 0. md5 与 sha1 MD5 的全称是 Message-Digest Algorithm 5(信息-摘要算法).128 位长度.目前 MD5 是一种不可逆算法 ...

  9. 原创:MD5 32位加密软件

    网站后台数据库切勿使用明文保存密码,否则一旦黑客拿下你的Webshell,后果不堪设想. 网站后台密码加密大多数采用的就是MD5算法加密.今天给大家送一个本人用c#简单编写的MD5 32位加密程序,虽 ...

随机推荐

  1. TPshop标签

    很多cms 中有很多 标签, 商品标签 文章标签  列表标签  几十个标签, 让开发者头疼, 难记,  TPshop开发者考虑到这点, 用了一个万能标签, 开发者非常方便实用 TPshop万能标签只要 ...

  2. 对SingleTask和TaskAffinity的理解(转至 http://www.2cto.com/kf/201311/254450.html)

    最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解.   以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是Sing ...

  3. Aspose.Words对于Word的操作

    对于word操作一般是对已有word模板的操作,直接新建的不考虑,网上教程很多,自己看吧一般有以下几种办法(忘了具体几种了,一般情况下以下就够了)1.通过书签替换顾名思义,就是先定义一个书签,然后在书 ...

  4. Java多线程(九)之ReentrantLock与Condition

    一.ReentrantLock 类   1.1 什么是reentrantlock   java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 ...

  5. C# webbrowser判断页面是否加载完毕

    private void Form1_Load(object sender, EventArgs e) { webalipay.Url = new Uri("https://authzth. ...

  6. Link1123:转换到COFF期间失败:文件无效或损坏

        当在编译VS项目时,出现如下错误:         这个错误,表明在连接阶段出错.COFF为Common Object File Format,通用对象文件格式,它的出现为混合语言编程带来方便 ...

  7. 图解HTTP学习笔记——简单的HTTP协议

    简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...

  8. 图像中的artifacts

    artifacts 瑕疵 伪影(Artifacts) 伪影(Artifacts)-CT-基础术语 - 影像园 http://www.xctmr.com/baike/ct/c34b5413e305b45 ...

  9. SpringMVC使用@ResponseBody时返回json的日期格式及可能产生的问题

    http://blog.csdn.net/z69183787/article/details/40375831 遇到的问题: 1 条件: 1.1.表单里有两个时间参数,都是作为隐藏项随表单一起提交: ...

  10. pycharm使用docker镜像的python解释器,pycahrm可视化操作和管理dcoker

    网上关于pycahrm怎么使用docker容器的python解释器的科普,这方面太少,一半都只介绍pycahrm怎么使用linux的解释器.首先pycahrm确保是pro版本. 下面详细的介绍步骤 首 ...