gpt4 book ai didi

java方法在LDAP的ssha中进行密码加密

转载 作者:行者123 更新时间:2023-12-03 01:11:39 24 4
gpt4 key购买 nike

我想在 ssha 中加密密码。有办法做到这一点吗?我找到了这个,但在 sha 中。

private String encrypt(final String plaintext) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e.getMessage());
}
try {
md.update(plaintext.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage());
}
byte raw[] = md.digest();
String hash = (new BASE64Encoder()).encode(raw);
return hash;
}

最佳答案

OpenLDAP 有一个命令行实用程序来生成 SSHA 密码:

# slappasswd -h {SSHA} -s test123
{SSHA}FOJDrfbduQe6mWrz70NKVr3uEBPoUBf9

此代码将生成加盐 SHA-1 密码,其输出可供 OpenLDAP 使用:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

private static final int SALT_LENGTH = 4;

public static String generateSSHA(byte[] password)
throws NoSuchAlgorithmException {
SecureRandom secureRandom = new SecureRandom();
byte[] salt = new byte[SALT_LENGTH];
secureRandom.nextBytes(salt);

MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password);
crypt.update(salt);
byte[] hash = crypt.digest();

byte[] hashPlusSalt = new byte[hash.length + salt.length];
System.arraycopy(hash, 0, hashPlusSalt, 0, hash.length);
System.arraycopy(salt, 0, hashPlusSalt, hash.length, salt.length);

return new StringBuilder().append("{SSHA}")
.append(Base64.getEncoder().encodeToString(hashPlusSalt))
.toString();
}

关于java方法在LDAP的ssha中进行密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com