导航:首页 > 编程语言 > javamd5加密中文

javamd5加密中文

发布时间:2024-10-27 23:13:55

java中md5加密

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class md5 {
public String str;

public void md5s(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();

int i;

StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
System.out.println("result: " + buf.toString());// 32位的加密
System.out.println("result: " + buf.toString().substring(8, 24));// 16位的加密
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}

public static void main(String agrs[]) {
md5 md51 = new md5();
md51.md5s("4");//加密4
}

}

❷ java文件md5值 什么意思

MD5是常用的一种加密方式,原数据加过加密算法后的得到的数据就是MD5值

用户的密码很多是以MD5值(或类似的其它算法)的方式保存的,这样即使数据库被侵入,也不能直接得到用户的原始密码

❸ java的MD5withRSA算法可以看到解密的内容么

您好,
<一>. MD5加密算法:
? ? ? ?消息摘要算法第五版(Message Digest Algorithm),是一种单向加密算法,只能加密、无法解密。然而MD5加密算法已经被中国山东大学王小云教授成功破译,但是在安全性要求不高的场景下,MD5加密算法仍然具有应用价值。
?1. 创建md5对象:?
<pre name="code" class="java">MessageDigest md5 = MessageDigest.getInstance("md5");
?2. ?进行加密操作:岁宏?
byte[] cipherData = md5.digest(plainText.getBytes());

?3. ?将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。?
String toHexStr = Integer.toHexString(cipher & 0xff);

?4. 如果该正数小于16(长度为1个字符),前面拼接0占位:确保最后生成的是32位字符串。?
builder.append(toHexStr.length() == 1 ? "0" + toHexStr : toHexStr);

?5.?加密转换之后的字符串为:?
?6. 完整的MD5算法应用如下所示:?
/**
* 功能简述: 测试MD5单向加密.
* @throws Exception
*/
@Test
public void test01() throws Exception {
String plainText = "Hello , world !"乎派册;
MessageDigest md5 = MessageDigest.getInstance("md5");
byte[] cipherData = md5.digest(plainText.getBytes());
StringBuilder builder = new StringBuilder();
for(byte cipher : cipherData) {
String toHexStr = Integer.toHexString(cipher & 0xff);
builder.append(toHexStr.length() == 1 ? "0" + toHexStr : toHexStr);
}
System.out.println(builder.toString());
//
}

??
<二>. 使用BASE64进行加密/解密:
? ? ? ? 使用BASE64算法通常用作对二进制数据进行加密,加密之后的数据不易被肉眼识别。严格来说,经过BASE64加密的数据其实没有安全性可言,因为它的加密解密算法都是公开的,典型的防菜鸟不防程序羡逗猿的呀。?经过标准的BASE64算法加密后的数据,?通常包含/、+、=等特殊符号,不适合作为url参数传递,幸运的是Apache的Commons Codec模块提供了对BASE64的进一步封装。? (参见最后一部分的说明)
?1.?使用BASE64加密:?
BASE64Encoder encoder = new BASE64Encoder();
String cipherText = encoder.encode(plainText.getBytes());

? 2.?使用BASE64解密:?
BASE64Decoder decoder = new BASE64Decoder();
plainText = new String(decoder.decodeBuffer(cipherText));

? 3. 完整代码示例:?
/**
* 功能简述: 使用BASE64进行双向加密/解密.
* @throws Exception
*/
@Test
public void test02() throws Exception {
BASE64Encoder encoder = new BASE64Encoder();
BASE64Decoder decoder = new BASE64Decoder();
String plainText = "Hello , world !";
String cipherText = encoder.encode(plainText.getBytes());
System.out.println("cipherText : " + cipherText);
//cipherText : SGVsbG8gLCB3b3JsZCAh
System.out.println("plainText : " +
new String(decoder.decodeBuffer(cipherText)));
//plainText : Hello , world !
}

??
<三>. 使用DES对称加密/解密:
? ? ? ? ?数据加密标准算法(Data Encryption Standard),和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串。使用DES加密、解密的核心是确保工作密钥的安全性。
?1.?根据key生成密钥:?
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("des");
SecretKey secretKey = keyFactory.generateSecret(keySpec);

? 2.?加密操作:?
Cipher cipher = Cipher.getInstance("des");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new SecureRandom());
byte[] cipherData = cipher.doFinal(plainText.getBytes());

? 3.?为了便于观察生成的加密数据,使用BASE64再次加密:?
String cipherText = new BASE64Encoder().encode(cipherData);

? ? ?生成密文如下:PtRYi3sp7TOR69UrKEIicA==?
? 4.?解密操作:?
cipher.init(Cipher.DECRYPT_MODE, secretKey, new SecureRandom());
byte[] plainData = cipher.doFinal(cipherData);
String plainText = new String(plainData);

? 5. 完整的代码demo:?
/**
* 功能简述: 使用DES对称加密/解密.
* @throws Exception
*/
@Test
public void test03() throws Exception {
String plainText = "Hello , world !";
String key = "12345678"; //要求key至少长度为8个字符

SecureRandom random = new SecureRandom();
DESKeySpec keySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("des");
SecretKey secretKey = keyFactory.generateSecret(keySpec);

Cipher cipher = Cipher.getInstance("des");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, random);
byte[] cipherData = cipher.doFinal(plainText.getBytes());
System.out.println("cipherText : " + new BASE64Encoder().encode(cipherData));
//PtRYi3sp7TOR69UrKEIicA==

cipher.init(Cipher.DECRYPT_MODE, secretKey, random);
byte[] plainData = cipher.doFinal(cipherData);
System.out.println("plainText : " + new String(plainData));
//Hello , world !
}

??
<四>. 使用RSA非对称加密/解密:
? ? ? ? RSA算法是非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法,只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。用户通过https协议访问服务器时,就是使用非对称加密算法进行数据的加密、解密操作的。
? ? ? ?服务器发送数据给客户端时使用私钥(private key)进行加密,并且使用加密之后的数据和私钥生成数字签名(digital signature)并发送给客户端。客户端接收到服务器发送的数据会使用公钥(public key)对数据来进行解密,并且根据加密数据和公钥验证数字签名的有效性,防止加密数据在传输过程中被第三方进行了修改。
? ? ? ?客户端发送数据给服务器时使用公钥进行加密,服务器接收到加密数据之后使用私钥进行解密。
?1.?创建密钥对KeyPair:
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("rsa");
keyPairGenerator.initialize(1024); //密钥长度推荐为1024位.
KeyPair keyPair = keyPairGenerator.generateKeyPair();

? 2.?获取公钥/私钥:
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

? 3.?服务器数据使用私钥加密:
Cipher cipher = Cipher.getInstance("rsa");
cipher.init(Cipher.ENCRYPT_MODE, privateKey, new SecureRandom());
byte[] cipherData = cipher.doFinal(plainText.getBytes());

? 4.?用户使用公钥解密:
cipher.init(Cipher.DECRYPT_MODE, publicKey, new SecureRandom());
byte[] plainData = cipher.doFinal(cipherData);

? 5.?服务器根据私钥和加密数据生成数字签名:
Signature signature = Signature.getInstance("MD5withRSA");
signature.initSign(privateKey);
signature.update(cipherData);
byte[] signData = signature.sign();

? 6.?用户根据公钥、加密数据验证数据是否被修改过:
signature.initVerify(publicKey);
signature.update(cipherData);
boolean status = signature.verify(signData);

? 7. RSA算法代码demo:<img src="http://www.cxyclub.cn/Upload/Images/2014081321/99A5FC9C0C628374.gif" alt="尴尬" title="尴尬" border="0">
/**
* 功能简述: 使用RSA非对称加密/解密.
* @throws Exception
*/
@Test
public void test04() throws Exception {
String plainText = "Hello , world !";

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("rsa");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();

PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

Cipher cipher = Cipher.getInstance("rsa");
SecureRandom random = new SecureRandom();

cipher.init(Cipher.ENCRYPT_MODE, privateKey, random);
byte[] cipherData = cipher.doFinal(plainText.getBytes());
System.out.println("cipherText : " + new BASE64Encoder().encode(cipherData));
//gDsJxZM98U2GzHUtUTyZ/Ir/
///ONFOD0fnJoGtIk+T/+3yybVL8M+RI+HzbE/jdYa/+
//yQ+vHwHqXhuzZ/N8iNg=

cipher.init(Cipher.DECRYPT_MODE, publicKey, random);
byte[] plainData = cipher.doFinal(cipherData);
System.out.println("plainText : " + new String(plainData));
//Hello , world !

Signature signature = Signature.getInstance("MD5withRSA");
signature.initSign(privateKey);
signature.update(cipherData);
byte[] signData = signature.sign();
System.out.println("signature : " + new BASE64Encoder().encode(signData));
//+
//co64p6Sq3kVt84wnRsQw5mucZnY+/+vKKXZ3pbJMNT/4
///t9ewo+KYCWKOgvu5QQ=

signature.initVerify(publicKey);
signature.update(cipherData);
boolean status = signature.verify(signData);
System.out.println("status : " + status);
//true
}

❹ java怎么把字符串进行md5加密

给你看源代码,我自己写的

public static String md5(String src){
try{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] output = md.digest(src.getBytes());//加密处理
//将加密结果output利用Base64转换成字符串输出
String ret = Base64.encodeBase64String(output);

return ret;
}catch(Exception e){
throw new NoteException("密码加密失败",e);
}

}

public static void main(String[] args) {
System.out.println(md5("123456"));
}

❺ 如何使用Java生成MD5代码

这是我以前做的一个小项目时用到md5写的


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

//将用户密码进行md5加密 并返回加密后的32位十六进制密码

public class MD5Util {
public static String md5(String password) {

try {
// 获取md5对象
MessageDigest md = MessageDigest.getInstance("md5");
// 获取加密后的密码并返回十进制字节数组
byte[] bytes = md.digest(password.getBytes());

// 遍历数组得到每个十进制数并转换成十六进制

StringBuffer sb = new StringBuffer();
for (byte b : bytes) {

// 把每个数转成十六进制 存进字符中
sb.append(toHex(b));
}
String finish = sb.toString();
return finish;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new RuntimeException(e);
}

}

// 十进制转十六进制方法
private static String toHex(byte b) {

int target = 0;

if (b < 0) {
target = 255 + b;
} else {
target = b;
}

int first = target / 16;
int second = target % 16;

return Hex[first] + Hex[second];
}

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

/*public static void main(String[] args) {
String a = MD5Util.md5("1234");
System.out.println(a);
}*/
}

❻ java中如何对中文字符串进行加密

简单的加密 ?

按char转byte,然后固定长度保存起来就是了

❼ 求Java的MD5加密解密实现类。 要实现对用户的密码进行加密! 然后验证用户的密码!

我简单说下吧,加密就是存进数据库的时候变成MD5存进去,解密,就是对比的时候,将用户输入的密码转换成MD5和数据库里面的对比。

❽ Java MD5和SHA256等常用加密算法

在Java项目开发中,数据安全是至关重要的。特别是在前后端接口交互时,为了保护信息的完整性和安全性,我们需要对接口签名、用户登录密码等进行加密处理。加密算法作为基础技术,在身份验证、单点登录、信息通信和支付交易等多个场景中扮演着关键角色。

MD5,全称信息摘要算法,是一种常见的128位(16字节)散列函数。它通过复杂的算法操作,将明文转化为无法还原的密文,确保信息传输的一致性。尽管MD5常用于密码的存储,但需注意,由于其本质上是摘要而非加密,生成的128位字符串是单向的,无法逆向获取原始信息。在找回密码时,我们只能通过对比用户输入的MD5值来验证,而无法获取原密码。

SHA系列,如SHA-1,尽管有碰撞的潜在风险,但其安全性相对较高,适用于对信息安全要求较高的场景。HMAC(Hash-based Message Authentication Code)是基于哈希函数的认证码,推荐使用SHA256、SHA384、SHA512以及它们的HMAC变种,如HMAC-SHA256等,以提供更高级别的加密和认证功能。

对于实际应用中的对称加密算法,如常见的加密盐,它可以增强密码的安全性,防止暴力破解。至于在线加密网站,选择适合项目的加密算法至关重要。在众多算法中,SHA256、SHA384和SHA512因其较高的安全性,以及HMAC-SHA变种的认证能力,被广泛认为是更推荐的选择。

阅读全文

与javamd5加密中文相关的资料

热点内容
隐藏不显示文件夹软件 浏览:823
linux双通道 浏览:236
word中如何选择一个文件夹 浏览:438
pdf纺织 浏览:439
在哪里app可以免费看英超 浏览:235
想找个程序员公众号 浏览:637
更改cpu名称批处理命令 浏览:395
app物理b和c有什么区别 浏览:202
欢乐颂程序员买包子 浏览:391
安卓锁屏如何禁止使用 浏览:762
链路聚合配置命令 浏览:100
qqforlinux软件 浏览:203
java的主方法吗 浏览:789
androidarraymap遍历 浏览:956
群里聊程序员 浏览:467
东京塔pdf 浏览:579
解压版怎么玩儿 浏览:186
底部极限指标源码 浏览:853
14位ad单片机推荐 浏览:281
网络引导linux 浏览:140