.net md5 java 偏移量_C# java MD5加密方不一致问题
说来惭愧,做开发几年了,一直在吸取,今天也写写自已关于技术的一点点理解,不正之处,请大家多多指点。
由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式,而现在需要切换到Java平台下,关键问题是如何将用户信息通过Java方式的MD5加密码到与C#同样的结果。
经过查询资料与测试,Java与C#默认的MD5加密结果是一致的,主要是编码问题。
测试一:
C#代码 默认编码加密
1 classProgram2 {3 static void Main(string[] args)4 {5 String cleanString = "111111";6
7
8 System.Console.Write(MD5(cleanString));9
10
11 Console.Read();12
13 }14
15
16 public static string MD5(stringsText)17 {18 Byte[] clearBytes =Encoding.Default.GetBytes(sText);19 Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);20 returnBitConverter.ToString(hashedBytes);21 }22 }
View Code
Java代码 默认编码加密
1 public static void main(String[] args) throwsNoSuchAlgorithmException,2 UnsupportedEncodingException {3 String s = "111111";4 System.out.println(makeMD5(s)); ;5
6 }7
8 public staticString makeMD5(String password) {9 MessageDigest md;10 try{11 md = MessageDigest.getInstance("MD5");12 md.update(password.getBytes());13 byte[] bPwd=md.digest();14 String pwd = new BigInteger(1, bPwd) .toString(16);15 if(pwd.length()%2==1){16 pwd="0"+pwd;17 }18 int length=pwd.length();19 StringBuffer sb=new StringBuffer(length+length/2-1);20 for(int i=0;i
说明:为了C#达到一致的格式,这里做了循环格式化
测试二 Unicode编码
C# 将 上述代码中
1 Byte[] clearBytes =Encoding.Default.GetBytes(sText);
修改为
1 Byte[] clearBytes =Encoding.Unicode.GetBytes(sText);
结果:
70-66-A4-0F-42-77-69-CC-43-34-7A-A9-6B-72-93-1A
Java 将
1 md.update(password.getBytes());
修改为:
1 md.update(password.getBytes("UTF-16LE"));
结果:
70-66-A4-0F-42-77-69-CC-43-34-7A-A9-6B-72-93-1A
经过多轮测试,结果如下:
java与C#通过MD5加密结果不致,一般都是编码问题,下面列出编码对照
JAVA(加密码111111)
C#(加密码111111)
US-ASCII
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
ASCII
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
ISO-8859-1
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
ISO-8859-1
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
UTF-8
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
UTF-8
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
UTF-16BE
AA-61-7C-C9-92-81-C9-F5-1C-A0-72-9D-B9-30-FD-3D
BigEndianUnicode
AA-61-7C-C9-92-81-C9-F5-1C-A0-72-9D-B9-30-FD-3D
UTF-16LE
70-66-A4-0F-42-77-69-CC-43-34-7A-A9-6B-72-93-1A
Unicode
70-66-A4-0F-42-77-69-CC-43-34-7A-A9-6B-72-93-1A
UTF-16
6A-97-04-80-3E-CC-65-94-2F-A4-4E-F7-3A-11-B7-80
-
-
UTF-7
96-E7-92-18-96-5E-B7-2C-92-A5-49-DD-5A-33-01-12
-
UTF-32
B7-7D-95-DB-0C-A3-41-3E-0F-79-F4-C5-47-F8-25-E5
以上是个人一点总结,欢迎指正!
.net md5 java 偏移量_C# java MD5加密方不一致问题相关推荐
- c md5加密 和java不一样_C#的MD5加密为什么和JAVA的加密出来的结果不一样?
下面这个和java结果一样了.static void Main(string[] args) { string input = "3500000112345620141118050554&q ...
- 利用Java自带的MD5加密java.security.MessageDigest;
MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著 ...
- java 赋值md5_Hook Java API以获得MD5加密前数据
Java实现MD5加密 在Java中,我们用MD5对数据进行加密,代码大概是这样的: import java.security.MessageDigest; import java.security. ...
- Java实现MD5加密及验证(两种方式,加盐md5与未加盐md5)
一.加盐MD5加密工具 package com.dimpt.base.util;import java.io.UnsupportedEncodingException; import java.sec ...
- java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)
转载 转载自:http://www.tuicool.com/articles/nMNVVj Java 自带的数据加密类MessageDigest(MD5或SHA加密) 说明: 在网站中,为了保护网站会 ...
- Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理
前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...
- Java实现Linux的md5加密,Linux_详细讲解:Linux系统GRUB的MD5加密方法,1、用grub-md5-crypt成生GRUB的md5密 - phpStudy...
详细讲解:Linux系统GRUB的MD5加密方法 1.用grub-md5-crypt成生GRUB的md5密码: 通过grub-md5-crypt对GRUB的密码进行加密码运算,比如我们想设置grub的 ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Bootstrap4+MySQL前后端综合实训-Day06-PM【MD5加码-生成32位md5码、ResultData.java、分页查询用户数据、添加用户按钮的实现】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 MD5加码 生成32位md5码 ResultData.java 分页查询 ...
最新文章
- Git related
- 消防信号二总线有没电压_消防的电源总线和二总线的区别,二总线是不是信号..._消防考试_帮考网...
- android开发菜单,Android学习指南之十六:Android菜单详解
- bzoj 3572 [Hnoi2014]世界树——虚树
- linux怎么创建vi脚本,Vim 创建Python脚本时候自动补全解释器和编码方法
- 反射java_Java反射原理
- 阿里云云服务器的端口配置问题
- 博科查看光功率_法拉第旋光器:非互易性旋转光的偏振
- ORA-01858: 在要求输入数字处找到非数字字符 13行
- python setup.py install 出错_python setup.py install 失败
- 2019年新款iPhone高清渲染视频来了 强迫症慎点...
- orange实现逻辑回归_逻辑回归模型
- 熵的理解(玻尔兹曼分布)
- 任务方案思考:序列标注(NER)篇
- Linux下Apache服务器配置
- @PropertySource注解获取配置文件值
- Android常用组件,太全了
- 鸡兔同笼编程语言c,鸡兔同笼用c语言编程
- 学c语言前要学计算机导论吗,计算机导论与C语言
- java 判断用户名_java如何判断用户名和密码
热门文章
- mysql5.6.35安装_mysql5.6.35 二进制快速安装
- java 队列复制_复制一个文件夹里的文件到另一个目录下 (使用队列的方法实现)...
- linux vps 运行exe文件夹,在centos环境下运行.exe文件
- java获取年的第一天和最后一天_java中如何获取当前年份的第一天和最后一天
- 计算机关闭窗口可以使用alt,禁止使用Alt+F4关闭窗口完整代码
- 织梦 php 传值,php获取post参数的几种方式
- java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化
- mysql 5.7 flashback_Flashback for MySQL 5.7
- Win11系统设置绿色护眼模式的方法
- 如何在Unity3d平台下低延迟播放RTMP或RTSP流