Java MD5校验与RSA加密
区别:
MD5加密:
加密时通过原字符串加密成另一串字符串
解密时需要原加密字符串进行重新加密比较两次加密结果是否一致
RSA加密:
加密时通过原字符串生成密钥对(公钥+私钥)
解密时通过公钥和私钥进行解密,解密出原字符串进行比较是否一致
个人观点:
RSA加密略比MD5加密牛逼一点点
但凡事都有好坏 MD5加密执行效率比RSA快
废话不多说上栗子:
MD5加密:
package cn.news.util; import java.security.MessageDigest; /**
*
* @author: 房上的猫
*
* @time: 2018年5月14日 下午8:04:44
*
* @博客地址: https://www.cnblogs.com/lsy131479/
*
*/
public class MD5 {
private static String MD(String s) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
//md.update(s.getBytes("utf-8"));
byte[] bytes = md.digest(s.getBytes("utf-8"));
return toHex(bytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
} private static String toHex(byte[] bytes) { final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
StringBuilder ret = new StringBuilder(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
}
return ret.toString();
} public static void main(String[] args) { System.out.println(MD("hello word"));
}
}
结果:

RSA加密与解密:
package cn.news.util; import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64; import javax.crypto.Cipher; /**
*
* @author: 房上的猫
*
* @time: 2018年5月14日 下午7:56:12
*
* @博客地址: https://www.cnblogs.com/lsy131479/
*
*/
public class RSA {
public static String data = "hello world"; public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub KeyPair keyPair = genKeyPair(1024); // 获取公钥,并以base64格式打印出来
PublicKey publicKey = keyPair.getPublic();
System.out.println("公钥:" + new String(Base64.getEncoder().encode(publicKey.getEncoded()))); // 获取私钥,并以base64格式打印出来
PrivateKey privateKey = keyPair.getPrivate();
System.out.println("私钥:" + new String(Base64.getEncoder().encode(privateKey.getEncoded()))); // 公钥加密
byte[] encryptedBytes = encrypt(data.getBytes(), publicKey);
System.out.println("加密后:" + new String(encryptedBytes)); // 私钥解密
byte[] decryptedBytes = decrypt(encryptedBytes, privateKey);
System.out.println("解密后:" + new String(decryptedBytes));
} // 生成密钥对
public static KeyPair genKeyPair(int keyLength) throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
return keyPairGenerator.generateKeyPair();
} // 公钥加密
public static byte[] encrypt(byte[] content, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");// java默认"RSA"="RSA/ECB/PKCS1Padding"
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(content);
} // 私钥解密
public static byte[] decrypt(byte[] content, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(content);
}
}
运行结果:

Java MD5校验与RSA加密的更多相关文章
- .NET 对接JAVA 使用Modulus,Exponent RSA 加密
最近有一个工作是需要把数据用RSA发送给Java 虽然一开始标准公钥 net和Java RSA填充的一些算法不一样 但是后来这个坑也补的差不多了 具体可以参考 http://www.cnblogs. ...
- java和php实现RSA加密互通-b
java和PHP RSA加密实现互通 1:通过openssl 生成公钥和密钥文件(linux) (1) 生产私钥文件命令 openssl genrsa -out rsa_private_key.pe ...
- JAVA的非对称加密算法RSA——加密和解密
原文转载至:https://www.cnblogs.com/OnlyCT/p/6586856.html 第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一 ...
- Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)
系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...
- Java MD5校验
Java 生成MD5 MD5(Message Digest Algorithm),消息摘要算法,一般用于校验文件的完整性.Java内置已经实现了MD5,与SHA1算法,利用java.security. ...
- android 客户端 RSA加密 要注意的问题
针对java后端进行的RSA加密,android客户端进行解密,结果是部分乱码的问题:注意两点,编码问题和客户端使用的算法问题 即:都使用UTF-8编码,Base64使用一致,另外,使用下面的代码在后 ...
- RSA加密解密与加签验签
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...
- Java使用RSA加密解密及签名校验
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...
- Java MD5加密与RSA加密
区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私 ...
随机推荐
- Docker 学习应用篇三:使用docker搭建的环境,安装thinksns
Thinksns 是一个开源的社交网站,因为目前的项目需要用到这个,所以就下载一个安装试试看. 之前在windows上用了wamp,安装的很顺利.但是项目是要部署到linux上的.于是我便用了Dock ...
- 解决VMware安装ubuntu16.04后无法全屏的问题
参考教程:http://www.jb51.net/os/Ubuntu/356462.html 双系统经常崩,故在windows10下装了个ubuntu的虚拟机,安装完成后无法全屏,进入系统设置调试显示 ...
- hihocoder 1323 - 回文字符串 - [hiho一下162周][区间dp]
用dp[i][j]表示把[i,j]的字符串str改写成回文串需要的最小操作步数. 并且假设所有dp[ii][jj] (ii>i , jj<j)都为已知,即包括dp[i+1][j].dp[i ...
- Oracle数据迁移之rman活动数据库复制
1.设置主库为归档模式 SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL& ...
- LAMP部署流水
1.安装完成linux系统后,关闭防火墙: [root@localhost ~]# service iptables stop iptables: Setting chains to policy A ...
- docker daemon configuration
于 Docker的分层镜像,除了 aufs,docker还支持btrfs, devicemapper和vfs,你可以使用 -s 或 –storage-driver= 选项来指定相关的镜像存储.在Ubu ...
- SecTools.Org--bp
Burp Suite使用介绍(一) | WooYun知识库 http://drops.wooyun.org/tips/2227 我的渗透利器 | EVILCOS fr ...
- ios-多语言版本开发(三)(转载)
写在前面 iOS 多语言版本的开发(二)中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习:但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串 ...
- numpy、pandas、scipy介绍
https://blog.csdn.net/LOLITA0164/article/details/80195124 numpy简介NumPy(Numeric Python)是一个Python包.它是一 ...
- SQL Server 登录名、服务器角色、用户名和数据库角色 --- 解释
一.基本解释 登录名:登录服务器的用户账号: 服务器角色:登录名对该服务器具有的权限,角色分多种的,一个角色可以有多个登录名,如操作系统的系统用户可以有多个. SQL服务器角色 sysadmin ...