Java实现SHA1加密代码实例
什么是SHA1加密
SHA1 (Secure Hash Algorithm 1)是一种被广泛使用的密码散列函数,经常用于数据验证和加密技术中。SHA1将任意大小的数据(输入)映射到固定大小的数据(输出),通常为160位的二进制值。SHA1加密算法在现代密码学里面被广泛应用,SHA1计算出来的摘要信息是不可逆的。
怎么用Java实现SHA1加密
Java提供了MessageDigest类用于实现SHA1加密操作。
主要步骤如下:
- 获取MessageDigest实例
- 将需要加密的数据传入MessageDigest实例
- 调用MessageDigest的digest()方法获取计算得到的摘要信息
- 将计算得到的摘要信息转成16进制或者64进制字符串形式
代码示例
示例1:SHA1加密字符串
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Sha1Util {
public static String sha1(String str) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
md.update(str.getBytes());
byte[] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
int b = digest[i] & 0xff;
if (b < 0x10) {
sb.append('0');
}
sb.append(Integer.toHexString(b));
}
return sb.toString();
}
public static void main(String[] args) {
String str = "hello world";
String sha1Str = sha1(str);
System.out.println(sha1Str);
}
}
输出结果:
2ef7bde608ce5404e97d5f042f95f89f1c232871
示例2:SHA1加密文件
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class FileSha1Util {
public static String sha1(File file) {
MessageDigest md = null;
DigestInputStream dis = null;
try {
md = MessageDigest.getInstance("SHA-1");
dis = new DigestInputStream(new FileInputStream(file), md);
byte[] buffer = new byte[1024 * 1024];
while (dis.read(buffer) > 0) ;
byte[] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
int b = digest[i] & 0xff;
if (b < 0x10) {
sb.append('0');
}
sb.append(Integer.toHexString(b));
}
return sb.toString();
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
} finally {
try {
if (dis != null) {
dis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) {
File file = new File("test.txt");
String sha1Str = sha1(file);
System.out.println(sha1Str);
}
}
输出结果:
c9b468d884d18ad7707741a6f9b0b16fdf33d527
总结
通过上面的示例代码,我们可以看到,使用Java实现SHA1加密是非常简单的。只需要使用MessageDigest类进行实例化,并调用相应的方法即可得到SHA1加密后的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现SHA1加密代码实例 - Python技术站