用java编写SHA算法
时间: 2023-07-19 10:09:24 浏览: 198
SHA (Secure Hash Algorithm) 是一种常用的密码散列函数,可以将任意长度的二进制数据映射为固定长度的较小二进制数据。以下是用 Java 编写 SHA 算法的示例代码:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class SHAExample {
public static void main(String[] args) throws NoSuchAlgorithmException {
String passwordToHash = "password123";
byte[] salt = getSalt();
String securePassword = getSHA512SecurePassword(passwordToHash, salt);
System.out.println("Secure password: " + securePassword);
}
private static String getSHA512SecurePassword(String passwordToHash, byte[] salt) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(salt);
byte[] bytes = md.digest(passwordToHash.getBytes());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
private static byte[] getSalt() throws NoSuchAlgorithmException {
SecureRandom sr = SecureRandom.getInstanceStrong();
byte[] salt = new byte[16];
sr.nextBytes(salt);
return salt;
}
}
```
在上面的代码中,我们使用了 SHA-512 算法来生成密码的散列值。首先我们调用 `getSalt()` 方法获取一个随机的盐值,然后将密码和盐值传入 `getSHA512SecurePassword()` 方法来生成散列值。最后,我们将生成的散列值输出到控制台。
阅读全文