maven ,添加加密算法,使用
1:消息摘要:(数字指纹):既对一个任意长度的一个数据块进行计算,产生一个唯一指纹。MD5/SHA1
发送给其他人你的信息和摘要,其他人用相同的加密方法得到摘要,最后进行比较摘要是否相同。
SHA(Secure Hash Algorithm,安全散列算法)
2:单匙密码体制:DES:比较简便高效,密钥简短,加解密速度快,破译极其困难,但其安全性依赖于密匙的安全性。
DES(Data
Encryption
Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密
3:数字签名:就是信息发送者用其私钥对从所传报文中提取出的特征数据(或称数字指纹)进行RSA算法操作,以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时也确保信息报文在经签名后末被篡改(即完整性)。当信息接收者收到报文后,就可以用发送者的公钥对数字签名进行验证。
代表:DSA
4:非对称密匙密码体制(公匙体系):加密密匙不同于解密密匙,加密密匙公之于众,谁都可以使用,解密密匙只有解密人自己知道。代表:RSA
二、使用Commons-codec加密
Apache Commons家族中的Commons Codec就提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等
加密算法也有很多,比较常用的有MD5和SHA-1。在Java中通过
java.security.MessageDigest类可以实现MD5和SHA-1加密算法。
import org.apache.commons.codec.digest.DigestUtils; //导入处理加密的类 public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub
String passwod="123456";
System.out.println(DigestUtils.md5Hex(passwod)); //md5加密
System.out.println(DigestUtils.sha256Hex(passwod)); //
} }
public class PasswordEncode {
public final static String MD5 = "MD5";
public final static String NONE = "NONE";
public final static String SHA_256 = "SHA-256";
public final static String SHA_512 = "SHA-512";
public final static String SHA_384 = "SHA-384"; /**
* 加密文件算法
*
* @param filename
* 需要加密的文件名
* @param algorithm
* 加密算法名
*/
public static void digestFile(String filename, String algorithm) {
byte[] b = new byte[1024 * 4];
int len = 0;
FileInputStream fis = null;
FileOutputStream fos = null;
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
fis = new FileInputStream(filename);
while ((len = fis.read(b)) != -1) {
md.update(b, 0, len);
}
byte[] digest = md.digest();
StringBuffer fileNameBuffer = new StringBuffer(128).append(filename).append(".").append(algorithm);
fos = new FileOutputStream(fileNameBuffer.toString());
OutputStream encodedStream = new Base64OutputStream(fos);
encodedStream.write(digest);
encodedStream.flush();
encodedStream.close();
} catch (Exception e) {
System.out.println("Error computing Digest: " + e);
} finally {
try {
if (fis != null)
fis.close();
} catch (Exception ignored) {
}
try {
if (fos != null)
fos.close();
} catch (Exception ignored) {
}
}
} /**
* 加密密码算法
*
* @param pass
* 需要加密的原始密码
* @param algorithm
* 加密算法名称
* @return 加密后的密码
* @throws NoSuchAlgorithmException
* 当加密算法不可用时抛出此异常
*/
public static String digestString(String password, String alg) throws NoSuchAlgorithmException {
String newPass;
if (alg == null || MD5.equals(alg)) {
newPass = DigestUtils.md5Hex(password);
} else if (NONE.equals(alg)) {
newPass = password;
} else if (SHA_256.equals(alg)) {
newPass = DigestUtils.sha256Hex(password);
} else if (SHA_384.equals(alg)) {
newPass = DigestUtils.sha384Hex(password);
} else if (SHA_512.equals(alg)) {
newPass = DigestUtils.sha512Hex(password);
} else {
newPass = DigestUtils.shaHex(password);
}
return newPass;
} /**
* 加密密码算法,默认的加密算法是MD5
*
* @param password
* 未加密的密码
* @return String 加密后的密码
*/
public static String digestPassword(String password) {
try {
if (password != null && !"".equals(password)) {
return digestString(password, MD5);
} else
return null;
} catch (NoSuchAlgorithmException nsae) {
throw new RuntimeException("Security error: " + nsae);
}
} /**
* 判断密码是不是相等,默认的加密算法是MD5
*
* @param beforePwd
* 要判断的密码
* @param afterPwd
* 加密后的数据库密码
* @return Boolean true 密码相等
*/
public static boolean isPasswordEnable(String beforePwd, String afterPwd) {
if (beforePwd != null && !"".equals(beforePwd)) {
String password = digestPassword(beforePwd);
return afterPwd.equals(password);
} else
return false;
} public static void main(String[] args) throws NoSuchAlgorithmException {
System.out.println(PasswordEncode.digestPassword("123456"));
System.out.println(PasswordEncode.digestString("123456", PasswordEncode.MD5));
PasswordEncode.digestFile("C:\\Users\\user\\Desktop\\PasswordEncode.java", PasswordEncode.SHA_512);
System.out.println(PasswordEncode.isPasswordEnable("123456", PasswordEncode.digestPassword("123456")));
}
}
maven ,添加加密算法,使用的更多相关文章
- maven ,添加加密算法 apache commons-codec.jar 包
在百度搜索commons-codec.jar maven , http://mvnrepository.com/ 到 maven 库搜索 commons-codec.jar maven .你需要添加 ...
- [转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。
使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://re ...
- maven 添加Sqlserver的jdbc jar包
maven添加sqlserver的jdbc驱动包 jdbc.jar download url->http://pan.baidu.com/s/1hrEhdti 通过maven命令将jar包安装到 ...
- maven添加oracle jdbc依赖
maven添加oracle jdbc依赖 由于Oracle授权问题,Maven不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到 ...
- maven 添加jar到中央/远程仓库
maven 添加jar到中央/远程仓库 开源中国 发表于 2014-08-23 00:08:00 commond: mvn deploy:deploy-file -DgroupId=com.tima. ...
- maven添加本地jar到本地库中
maven添加本地jar到本地库中(用于远端地址下载不了的情况) 在dos命令行执行以下命令将会吧ojdbc14-10.2.0.4.0.jar添加到本地库中(ps:必须已经安装了,maven,并配置了 ...
- Maven学习(七)-----Maven添加远程仓库
Maven添加远程仓库 默认情况下,Maven从Maven中央仓库下载所有依赖关系.但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到. 1. Java.net资 ...
- Maven添加本地依赖
在写本文的时候先来说明一下maven依赖的各种范围的意思 compile(编译范围) compile 是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的c ...
- maven 学习---Maven添加远程仓库
默认情况下,Maven从Maven中央仓库下载所有依赖关系.但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到. 1. Java.net资源库 添加Java.ne ...
随机推荐
- MySQL 之主从同步-半同步模式配置
从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...
- MySQL的用户密码过期功能
Payment Card Industry,即支付卡行业,PCI行业表示借记卡.信用卡.预付卡.电子钱包.ATM和POS卡及相关的业务. PCI DSS,即PCI数据安全标准(Payment Card ...
- video兼容--可用
兼容ie6,7,8,但是播放器会卡顿黑屏<!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- CNN卷积层基础:特征提取+卷积核+反向传播
本篇介绍卷积层的线性部分 一.与全连接层相比卷积层有什么优势? 卷积层可以节省参数,因为卷积运算利用了图像的局部相关性——分析出一小片区域的特点,加上Pooling层(汇集.汇聚),从附近的卷积结果中 ...
- 让WordPress支持google AMP
1.关于AMP 在移动互联网的时代,尽管网站响应式设计可以满足多屏(pc.手机.ipad等)浏览,但google在2015年10月推出了更快移动页面访问速度的技术-Accelerated Mobile ...
- 【Linux】【Jenkins】Jenkins安装和配置等
Jenkins配置详解: http://lib.csdn.net/article/git/18342 Jenkins介绍 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功 ...
- MySQL死锁问题分析及解决方法实例详解(转)
出处:http://www.jb51.net/article/51508.htm MySQL死锁问题是很多程序员在项目开发中常遇到的问题,现就MySQL死锁及解决方法详解如下: 1.MySQL常用 ...
- jl1.如何设置元素的宽高包含元素的边框和内边距
方法一: 文档地址:http://www.w3school.com.cn/cssref/pr_box-sizing.asp CSS3 box-sizing属性: box-sizing: bord ...
- JS获取QueryString(Jquery)
QueryString = { data: {}, Initial: function() { var aPairs, aTmp; var qu ...
- 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)
1. cv2.matchTemplate(src, template, method) # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...