C#

string target= "央行降息影响楼市:100万20年期房贷月供减少141元";
string result = Md5Helper.Md5Hex(aa);

//result ="98d59c461b6b40ae7cfe57c6cbdd3cc1"

java

String target= "央行降息影响楼市:100万20年期房贷月供减少141元";
String result = DigestUtils.md5Hex(aa);

//result ="98d59c461b6b40ae7cfe57c6cbdd3cc1"

对应 jar包为 commons-codec-1.6.jar

C#代码

public class Md5Helper
{
private static char[] toDigits = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

public static string Md5Hex(string I_SourceArray)
{
string R_Result;

byte[] temp = Encoding.UTF8.GetBytes(I_SourceArray);
sbyte[] temp1 = Md5Helper.ByteArray2SByteArray(temp);
R_Result = Md5Hex(temp1);

return R_Result;
}

public static string Md5Hex(sbyte[] I_SourceArray)
{
string R_Result;

sbyte[] md5SByteArray = Md5Helper.Md5Encode(I_SourceArray);
char[] charArray = Md5Helper.EncodeHex(md5SByteArray);

R_Result = new string(charArray);
return R_Result;
}

private static sbyte[] Md5Encode(sbyte[] I_Source)
{
sbyte[] R_Result;

byte[] temp = Md5Helper.SByteArray2ByteArray(I_Source);
byte[] temp1 = new MD5CryptoServiceProvider().ComputeHash(temp);
R_Result = Md5Helper.ByteArray2SByteArray(temp1);

return R_Result;
}

private static char[] EncodeHex(sbyte[] data)
{
int l = data.Length;
char[] R_Result = new char[l << 1];
for(int i =0,j =0; i<l;i++)
{
R_Result[j++] = toDigits[Md5Helper.MoveByte((0xF0 & data[i]), 4)];
R_Result[j++] = toDigits[ 0x0F & data[i] ];
}
return R_Result;
}

private static int MoveByte(int value, int pos)
{
if(value<0)
{
string s = Convert.ToString(value, 2);
for(int i=0; i< pos; i++)
{
s = "0" + s.Substring(0, 31);
}
return Convert.ToInt32(s, 2);
}
else
{
return value >> pos;
}
}

private static sbyte[] ByteArray2SByteArray(byte[] I_SourceByte)
{
return I_SourceByte.Select(p => Md5Helper.Byte2SByte(p)).ToArray();
}

private static byte[] SByteArray2ByteArray(sbyte[] I_SourceByte)
{
return I_SourceByte.Select(p => Md5Helper.SByte2Byte(p)).ToArray();
}

private static sbyte Byte2SByte(byte I_SourceSByte)
{
sbyte R_Result;

if (I_SourceSByte < 128)
{
R_Result = (sbyte)I_SourceSByte;
}
else
{
R_Result = (sbyte)(I_SourceSByte - 256);
}
return R_Result;
}

private static byte SByte2Byte(sbyte I_SourceSByte)
{
byte R_Result;

if(I_SourceSByte <0)
{
R_Result = (byte)(I_SourceSByte + 256);
}
else
{
R_Result = (byte) I_SourceSByte ;
}
return R_Result;
}

}

java中 DigestUtils.md5Hex 的c#实现的更多相关文章

  1. Java中比较不同的MD5计算方式

    在项目中经常需要使用计算文件的md5,用作一些用途,md5计算算法,通常在网络上查询时,一般给的算法是读取整个文件的字节流,然后计算文件的md5,这种方式当文件较大,且有很大并发量时,则可能导致内存打 ...

  2. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  3. JAVA中比较两个文件夹不同的方法

    JAVA中比较两个文件夹不同的方法,可以通过两步来完成,首先遍历获取到文件夹下的所有文件夹和文件,再通过文件路径和文件的MD5值来判断文件的异同.具体例子如下: public class TestFo ...

  4. Java中使用最频繁及最通用的Java工具类

    在Java中,工具类定义了一组公共方法,Java中使用最频繁及最通用的Java工具类. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.so ...

  5. java中MD5加密

    MD5加密是一种不可逆(一些网站通过庞大的数据库可以解密一些简单的)的加密算法(其实是信息摘要算法),常用于用户密码,文件上传等 MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长 ...

  6. JAVA中获取文件MD5值的方法

    1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获 ...

  7. java中常用工具类

    目录 一. org.apache.commons.io.IOUtils 二. org.apache.commons.io.FileUtils 三. org.apache.commons.lang.St ...

  8. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

  9. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

随机推荐

  1. java 用插入排序思想,对不规则数组排序。

    知道插入排序后,无意中发现,用插入排序思想,对不规则数组排序的排序 发现和许多大神写的不一样,大神写的简洁多了.--------

  2. SparkStreaming(源码阅读十二)

    要完整去学习spark源码是一件非常不容易的事情,但是咱可以积少成多嘛~那么,Spark Streaming是怎么搞的呢? 本质上,SparkStreaming接收实时输入数据流并将它们按批次划分,然 ...

  3. aar引用 no executable code found问题

    主工程中 repositories { flatDir { dirs project(':trade_module').file('libs') }} dependencies { compile f ...

  4. 同时使用Junit4的@Parameterized参数化测试和Spring容器

    转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...

  5. Python IDE PyCharm的基本快捷键和配置简介

    快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctr ...

  6. Python DES 加密解密,就是大家所谓想要的那个非常快速的方法

    这个要借助Crypto.Cipher这个插件来实现的,引用后只需要写如下代码即可 from Crypto.Cipher import DES class MyDESCrypt: key = chr(1 ...

  7. WEB打印控件Lodop

    主页 http://www.lodop.net/

  8. 【转】MySQL数据丢失讨论

    原文http://blog.sae.sina.com.cn/archives/4091 1.   概述 很多企业选择 MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么 ...

  9. C#读取Excel遇到无法读取的解决方法

    C#读取Excel遇到无法读取的解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\ ...

  10. R语言将字符串矩阵转化为数值型矩阵

    这是原始数据的格式,当运行完下面的命令的时候,结果如下图 x=read.table("C:/Users/Administrator/Desktop/s1.txt") x=as.ma ...