导航:首页 > 文档加密 > md5符串加密

md5符串加密

发布时间:2022-06-06 03:50:09

java怎么实现md5字符串加密


importjava.security.MessageDigest;

publicclassMD5Util{

(byteb[]){
StringBufferresultSb=newStringBuffer();
for(inti=0;i<b.length;i++)
resultSb.append(byteToHexString(b[i]));

returnresultSb.toString();
}

(byteb){
intn=b;
if(n<0)
n+=256;
intd1=n/16;
intd2=n%16;
returnhexDigits[d1]+hexDigits[d2];
}

publicstaticStringMD5Encode(Stringorigin,Stringcharsetname){
StringresultString=null;
try{
resultString=newString(origin);
MessageDigestmd=MessageDigest.getInstance("MD5");
if(charsetname==null||"".equals(charsetname))
resultString=byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString=byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
}catch(Exceptionexception){
}
returnresultString;
}

[]={"0","1","2","3","4","5",
"6","7","8","9","a","b","c","d","e","f"};

publicstaticvoidmain(String[]args){
Strings="20160408dehui013691632869";
System.out.println(MD5Encode(s,null));
}

}

Ⅱ md5加密是什么

md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。

MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

Ⅲ 如何对字符串进行MD5加密,用C语言实现,给出源代码和加密函数

#include <stdio.h>
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
#define R_memset(x, y, z) memset(x, y, z)
#define R_memcpy(x, y, z) memcpy(x, y, z)
#define R_memcmp(x, y, z) memcmp(x, y, z)
typedef unsigned long UINT4;
typedef unsigned char *POINTER;
typedef struct {
/*四个32bits数,用于存放最终计算得到的消息摘要.当消息长度>512bits时,也用于存放每个512bits的中间结果*/
UINT4 state[4];
/*存储原始信息的bits数长度,不包括填充的bits,最长为2^64 bits*/
UINT4 count[2];
/*存放输入的信息的缓冲区,512bits*/
unsigned char buffer[64];
} MD5_CTX;
static void MD5Transform(UINT4[4], unsigned char[64]);
static void Encode(unsigned char *, UINT4 *, unsigned int);
static void Decode(UINT4 *, unsigned char *, unsigned int);
/*
用于bits填充的缓冲区,当欲加密的信息的bits数被512除其余数为448时,需要填充的bits的最大值为512=64*8*/
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
/*接下来的这几个宏定义是md5算法规定的,就是对信息进行md5加密都要做的运算*/
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
#define FF(a, b, c, d, x, s, ac) {\
(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac);\
(a) = ROTATE_LEFT ((a), (s));\
(a) += (b);\
}
#define GG(a, b, c, d, x, s, ac) {\
(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac);\
(a) = ROTATE_LEFT ((a), (s));\
(a) += (b);\
}
#define HH(a, b, c, d, x, s, ac) {\
(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac);\
(a) = ROTATE_LEFT ((a), (s));\
(a) += (b);\
}
#define II(a, b, c, d, x, s, ac) {\
(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac);\
(a) = ROTATE_LEFT ((a), (s));\
(a) += (b);\
}

Ⅳ 使用md5怎么给一串字符串加密

md5 不是加密算法,是单向的,就是说经过这个算法计算得到的结果不可能反推回原始值

Ⅳ md5加密以后的字符串长度

加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符。MD5并不是加密算法,而是摘要算法。加密算法是可逆的,摘要算法是理专论上不可逆的,详细步骤:

1、md5算法主要应用在密码领域,为了防止明文传输密码的危险性,一般会用密码的md5值来代替密码本身。

Ⅵ 如何给字符串用md5加密c#实现。

楼上的朋友给出的是在Web里的MD5加密方法,以下是在Winform窗体程序中进行MD5加密的算法:
/// <summary>
/// 将指定字符串进行MD5加密
/// </summary>
private string GetMD5str(string oldStr)
{
//将输入转换为ASCII 字符编码
ASCIIEncoding enc = new ASCIIEncoding();
//将字符串转换为字节数组
byte[] buffer = enc.GetBytes(oldStr);
//创建MD5实例
MD5 md5 = new MD5CryptoServiceProvider();
//进行MD5加密
byte[] hash = md5.ComputeHash(buffer);
StringBuilder sb = new StringBuilder();
//拼装加密后的字符
for (int i = 0; i < hash.Length; i++)
{
sb.AppendFormat("{0:x2}", hash[i]);
}
//输出加密后的字符串
return sb.ToString();
}
此外,用此方法时需要添加
using System.Security.Cryptography;
命名空间

Ⅶ 用MD5对同一个字符串加密后为什么输出不一样

那后面的符号好像是对象地址值,你把那两行打印换成这个看看
System.out.println
(new
String(bytes));
System.out.println
(new
String(bytes2));

Ⅷ MD5采用什么的加密方式

MD5采用的是对输入的任意长度的消息进行运算,产生一个128位的消息摘要。
你如果是使用MD5加密的话,非常好!虽然MD5的源代码满天飞,使用任何人都可以了解MD5的详尽算法描述,但是绝对没有任何人“可以将一个经由MD5算法加密过的字符串还原回原始的字符串”,这是真实的。
虽然说中国人“王小云教授”破解过所谓的MD5,那她的破解也是采用碰撞原理破解,如果你采用SHA和MD5的结合,她也不可能使用它的碰撞原理将其破解,换句话说,碰撞破解并不代表她能还原原始的字符串..
..
.
.

阅读全文

与md5符串加密相关的资料

热点内容
程序员转金融IT 浏览:834
黑马程序员培训效果如何 浏览:910
本地集成编译 浏览:528
韩国电影哪个app可以看 浏览:703
玖月授权什么app什么梗 浏览:785
怎么使用服务器上的ip地址是什么情况 浏览:750
手机密码加密后怎么解密 浏览:343
华为云的服务器的ip地址怎么访问不 浏览:367
webstormvue在线实时编译生效 浏览:184
3225pdf 浏览:171
java中的常用类 浏览:395
安卓手机oppo反向色调怎么开 浏览:138
罗志祥pdf 浏览:224
美国战争pdf 浏览:243
任务栏右击如何显示常用文件夹 浏览:100
海克斯康三次元编程 浏览:748
什么app可以上门喂猫 浏览:889
老程序员抓弹幕 浏览:655
刷地铁卡应该下个什么app 浏览:154
安卓版谷歌浏览器为什么用不了 浏览:505