java中 DigestUtils.md5Hex 的c#实现
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#实现的更多相关文章
- Java中比较不同的MD5计算方式
在项目中经常需要使用计算文件的md5,用作一些用途,md5计算算法,通常在网络上查询时,一般给的算法是读取整个文件的字节流,然后计算文件的md5,这种方式当文件较大,且有很大并发量时,则可能导致内存打 ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- JAVA中比较两个文件夹不同的方法
JAVA中比较两个文件夹不同的方法,可以通过两步来完成,首先遍历获取到文件夹下的所有文件夹和文件,再通过文件路径和文件的MD5值来判断文件的异同.具体例子如下: public class TestFo ...
- Java中使用最频繁及最通用的Java工具类
在Java中,工具类定义了一组公共方法,Java中使用最频繁及最通用的Java工具类. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.so ...
- java中MD5加密
MD5加密是一种不可逆(一些网站通过庞大的数据库可以解密一些简单的)的加密算法(其实是信息摘要算法),常用于用户密码,文件上传等 MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长 ...
- JAVA中获取文件MD5值的方法
1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获 ...
- java中常用工具类
目录 一. org.apache.commons.io.IOUtils 二. org.apache.commons.io.FileUtils 三. org.apache.commons.lang.St ...
- java中的锁
java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
随机推荐
- java 用插入排序思想,对不规则数组排序。
知道插入排序后,无意中发现,用插入排序思想,对不规则数组排序的排序 发现和许多大神写的不一样,大神写的简洁多了.--------
- SparkStreaming(源码阅读十二)
要完整去学习spark源码是一件非常不容易的事情,但是咱可以积少成多嘛~那么,Spark Streaming是怎么搞的呢? 本质上,SparkStreaming接收实时输入数据流并将它们按批次划分,然 ...
- aar引用 no executable code found问题
主工程中 repositories { flatDir { dirs project(':trade_module').file('libs') }} dependencies { compile f ...
- 同时使用Junit4的@Parameterized参数化测试和Spring容器
转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...
- Python IDE PyCharm的基本快捷键和配置简介
快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctr ...
- Python DES 加密解密,就是大家所谓想要的那个非常快速的方法
这个要借助Crypto.Cipher这个插件来实现的,引用后只需要写如下代码即可 from Crypto.Cipher import DES class MyDESCrypt: key = chr(1 ...
- WEB打印控件Lodop
主页 http://www.lodop.net/
- 【转】MySQL数据丢失讨论
原文http://blog.sae.sina.com.cn/archives/4091 1. 概述 很多企业选择 MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么 ...
- C#读取Excel遇到无法读取的解决方法
C#读取Excel遇到无法读取的解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\ ...
- R语言将字符串矩阵转化为数值型矩阵
这是原始数据的格式,当运行完下面的命令的时候,结果如下图 x=read.table("C:/Users/Administrator/Desktop/s1.txt") x=as.ma ...